2011-09-13 54 views
3

我曾嘗試使用下面的命令來創建一個躲閃條形圖:如何將圖表添加到圖表中?

a = c(1,1,1,1,1,1,1,2,2,2,2,2,2,2) 
b = c("A","A","A","B","B","B","B","C","C","D","D","D","D","D") 
c = c(60,20,20,80,5,5,5,50,50,25,25,25,20,5) 
dat = data.frame(Group=a, Member=b, Percentage=c) 
ggplot(dat, aes(x=Member, y=Percentage)) + geom_bar(stat="identity", position="dodge", fill="white", colour="black") 

如果我有一組值:

table_values = c("2", "4", "2", "1") 
table_total = c("A", "B", "C", "D") 
tab = data.frame(Type=table_total, Value=table_values) 

我怎樣才能將其添加爲表到我的圖,以便它是否對齊?事情是這樣的:

enter image description here

我可以手動做到這一點,但我有很多圖形的生成,所以我在想,如果這可以實現自動化。有關如何做到這一點的任何建議?

回答

8

這有點破解,但可以用geom_text註釋,將文本放置爲稍微負值的y值。這將它放入繪圖區域而不是軸下方。

ggplot(dat, aes(x=Member, y=Percentage)) + 
    geom_bar(stat="identity", position="dodge", fill="white", colour="black") + 
    geom_text(aes(x=table_total, label=table_values), y=-2, data=tab) 

Using geom_text to make something like a table in a graph

我更多地參與的方法是創建兩個單獨的地塊,一個是條形圖,一個是「表」(關閉幾乎所有的主題元素)和使用的東西如align.plots(不知道這是否是正確的名稱)在ggExtra包中。

+0

非常感謝。完美的作品!一個簡單的問題:當我指定-2時,ggplot不會在Y軸上顯示該數字,所以一切都很好。但是,如果我指定說-20,它確實如此。有沒有辦法使ggplot的顯示值從0,80開始,但仍然可以在-20處繪製值?如果太混亂,我會嘗試解釋。 – Legend

+0

您可以指定哪些值在軸上獲取標籤。例如,您可以添加'+ scale_y_continuous(breaks = c(0,20,40,60,80))' –

+0

太棒了......非常感謝! – Legend

相關問題