2012-07-30 126 views
2

嗨,我可以給ggplot添加額外的圖例。 像 下面的代碼爲繪圖添加額外的圖例

d <- melt(as.matrix(data.frame(y1=1/(1:10),y2=1/(10:1)))) 
ggplot(d, aes(x=Var1, y=value,fill=Var2)) + geom_bar(stat="identity",position='dodge') 

這會生成包含我數據框的名字一個不錯的傳奇。 但是是否可以放入extralegend,其中包含從數據生成的一些額外信息。

在標準的R,我想補充額外的傳說像

d<-data.frame(y1=1/(1:10),y2=2*1/(10:1)) 
barplot(t(d),beside=T) 
legend("top",paste("sums:",apply(d,2,sum))) 

感謝

+0

你可以在設備窗口的任何位置,在plot面板或者'grid.text'中添加一些帶有'annotate'的文本。 – baptiste 2012-07-30 21:42:25

回答

2

這似乎爲我工作。

plot.new() 
    d <- melt(as.matrix(data.frame(y1=1/(1:10),y2=1/(10:1)))) 
    ggplot(d, aes(x=Var1, y=value,fill=Var2)) + 
    geom_bar(stat="identity",position='dodge') 

然後是令人興奮的東西。

legend('top',paste("sums:",tapply(d$value,d$Var2,sum))) 

我改變了apply語句來處理熔化的數據。

我不知道ggplot解決方案,但我很樂意看到一個。

+0

我不能讓第二部分使用你的例子圖例('top',paste(「sums:」,tapply(d $ value,d $ Var2,sum))) strwidth錯誤(legend,units =用戶「,cex = cex,font = text.font): plot.new尚未被調用 – monkeyking 2012-07-30 21:58:38

+0

對不起。我編輯了上面的帖子來調用'plot.new()'第一個 – Seth 2012-07-30 22:06:23

+0

好吧,我不知道我可以在ggplot上使用基礎圖形,只需先調用plot.new – monkeyking 2012-07-30 22:47:51