我想繪製使用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