我正在尝试使用ggplot在R中绘制堆积条形图。我还想为每个条的部分包括百分比。我尝试遵循这些帖子的建议1,2,3,但是值并不完全在它们各自的块中。我的数据是在dropbox上的一个文件。
输出结果为-
非常感谢您的帮助和时间!
我的代码如下:
f<-read.table("Input.txt", sep="\t", header=TRUE)
ggplot(data=f, aes(x=Form, y=Percentage, fill=Position)) +
geom_bar(stat="identity", colour="black") +
geom_text(position="stack", aes(x=Form, y=Percentage, ymax=Percentage, label=Percentage, hjust=0.5)) +
facet_grid(Sample_name ~ Sample_type, scales="free", space="free") +
opts(title = "Input_profile",
axis.text.x = theme_text(angle = 90, hjust = 1, size = 8, colour = "grey50"),
plot.title = theme_text(face="bold", size=11),
axis.title.x = theme_text(face="bold", size=9),
axis.title.y = theme_text(face="bold", size=9, angle=90),
panel.grid.major = theme_blank(),
panel.grid.minor = theme_blank()) +
scale_fill_hue(c=45, l=80)
ggsave("Output.pdf")
输出结果为-
![enter image description here](https://istack.dev59.com/scHwx.webp)
geom_text
的 y 值。它是每个条形段的高度。您需要进行一些算术计算来计算每个条形段的中点(或顶部等),将其添加为单独的变量,并将其用作geom_text
中的 y 变量。函数cumsum
可能会有所帮助。 - joranf <- ddply(f, .(Form, Sample_name, Sample_type), transform, pos = (cumsum(Percentage) - 0.5 * Percentage))
(需要使用plyr库),然后geom_text
语句应该是:geom_text(aes(x=Form, y=pos, label=Percentage))
。 - Sandy Muspratt