我想绘制使用ggplot在R中堆积的条形图。我还希望在每件酒吧中包含百分比。我试图按照文章1,2,3,但值不完全在其各自的块。我的数据是dropbox中的文件。R堆积的条形图绘制geom_text
我的代码如下:
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")
输出是 -
任何帮助不胜感激。 谢谢你的帮助和时间!
想想你给到'geom_text' y值。它是每个酒吧段的_height_。您需要进行一些算术运算来计算每个线段的中点(或顶点或其他),将其作为单独的变量添加,并将其用作'geom_text'中的y变量。函数'cumsum'可能会有所帮助。 – joran 2013-02-18 17:35:51
这样的东西会计算标签在每条线段中点的y位置:'f < - 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))' – 2013-02-18 21:02:00