我正在尝试生成一个看起来像这个图的第三个/底部的图形(其中有法语/撒丁岛语作为Y而其他作为X) http://www.nature.com/nature/journal/v514/n7523/fig_tab/nature13810_F3.html
我知道我需要使用ggplot2来生成这些,但我不知道如何。我想知道是否有人可以提供帮助
这是我的基本代码
tbl$RegionX2 <- factor(tbl$RegionX, as.character(tbl$RegionX))
plot <- ggplot(tbl, aes(y = RegionX2,
x = D, xmin = D - 2*SE, xmax = D + 2*SE, label = RegionX2, colour = RegionY)) +
geom_point(colour = "black") +
geom_text(hjust = 1.2) +
theme_classic() +
theme(axis.title = element_blank(),
axis.ticks = element_blank(),
axis.text.y = element_blank(),
legend.position = "none") +
geom_errorbarh(height = 0)
ggsave(plot=plot,height=7,width=7, filename="D.pdf", useDingbats=FALSE)
它的绘图类似于
但我不知道如何保持区域A和B在彼此之上堆叠,以获得x = 0线,或者获得X和Y标签,因为它们在该图中。有人可以帮忙吗?
此外,我的数据格式如下:
RegionX RegionY D SE
WestAfrica A -0.027 3.14E-03
EastAfrica A -0.0234 2.82E-03
SouthAsia A 0.0048 1.68E-03
Caucasus A 0.0052 1.17E-03
EastAsia A 0.0067 3.58E-03
WestAfrica B -0.028 3.14E-03
EastAfrica B -0.0244 2.82E-03
SouthAsia B 0.0038 1.68E-03
Caucasus B 0.0042 1.17E-03
EastAsia B 0.0057 3.58E-03
答案 0 :(得分:0)
目前还不是很清楚你打算实现什么,但是从链接中看到你的预期数字之后,这是我能够产生的东西。希望这有用。
首先,我使用RegionY和RegionX创建了一个新列,以便可以在Y轴上放置唯一因子。这是如何完成的。 tbl
是数据集中的数据框。
tbl$X <- paste0(tbl$RegionY,tbl$RegionX)
<强>更新强>
tbl$X <- as.factor(tbl$X)
然后是阴谋 [更新]
ggplot(tbl, aes(y = X,x = D,fill=RegionY)) +
geom_point(shape=21) +
scale_y_discrete(limits=rev(levels(tbl$X)),label=rev(substring(tbl$X,1,1))) +
geom_vline(xintercept = 0) +
geom_text(aes(label=tbl$RegionX,colour=RegionY),x=0.02) +
scale_x_continuous(limits = c(-0.04,0.025)) +
geom_errorbarh(aes(xmin = D - 2*SE, xmax = D + 2*SE,colour=RegionY),height=0.4) +
theme_classic() +
theme(axis.title = element_blank(),
axis.ticks = element_blank(),
axis.text.y = element_blank(),
legend.position = "none")
下面的结果图
如果您对此有任何疑问,请在评论中告诉我,以便我可以更新答案。