2015-12-25 83 views
0

我有一個ggplot,我想爲它添加圖例,但它僅反映顏色而不反映形狀。我使用了scale_shape_manual,但它仍然不起作用。這是我有什麼向ggplot添加形狀圖例R

plot <- ggplot(data.frame(labels, yes.percent.avgs.gc, yes.percent.avgs.dp, yes.percent.avgs.gm)) + 
    geom_point(aes(x=labels, y=yes.percent.avgs.gc, colour="GC"), shape=16, size=5) + # Plot individual points 
    geom_point(aes(x=labels, y=yes.percent.avgs.dp, colour="DP"), shape=17, size=5) + # Plot individual points 
    geom_point(aes(x=labels, y=yes.percent.avgs.gm, colour="GM"), shape=18, size=5) + # Plot individual points 
    geom_smooth(data=data.frame(labels, pred.avgs), aes(x=labels, y=pred.avgs, colour="Prediction Scores"), fill=NA, method=lm, size=1) + 
    xlab("Bin range") + 
    ylab("Argument Score") + 
    theme(legend.position = c(0.8, 0.2))+ 
    scale_shape_manual(name = "Legend", 
        labels = c("GC", "DP", "GM"), 
        values = c(16, 17, 18)) 

plot # show the plot 

我怎樣才能讓圖例顯示顏色和形狀。

+2

如果你想要形狀的自動圖例,把'shape ='放在'aes()'裏面。 – tonytonov

回答

2

顯然,問題在於您要將三個geom_point層疊在一起。這混淆了ggplot,它在圖例中一次使用所有形狀。

解決方法是在繪製數據之前收拾數據。既然你沒有提供reproducible example,我不得不補足。

library("ggplot2") 
library("tidyr") 
set.seed(123) 
labels <- sample(c("L1","L2", "L3", "L4"), 12, replace = TRUE) 
yes.percent.avgs.gc <- sample(1:100, 12) 
yes.percent.avgs.dp <- sample(1:100, 12) 
yes.percent.avgs.gm <- sample(1:100, 12) 

tidy.df <- gather(data.frame(labels, 
          yes.percent.avgs.gc, 
          yes.percent.avgs.dp, 
          yes.percent.avgs.gm), 
        group, value, 
        yes.percent.avgs.gc, yes.percent.avgs.dp, yes.percent.avgs.gm) 

plot <- ggplot(tidy.df) + 
    geom_point(aes(x=labels, y=value, colour=group, shape=group), size=5) + 
    xlab("Bin range") + 
    ylab("Argument Score") + 
    scale_shape_manual(name = "Legend", 
        labels = c("GC", "DP", "GM"), 
        values = c(16, 17, 18)) + 
    scale_colour_manual(name="Legend", 
         labels=c("GC", "DP", "GM"), 
         values=c("Red", "Green", "Blue")) 
print(plot) 

ggplot

我已經下降geom_smooth電話,因爲我看不出有沒有它情節之間的任何差異。

+0

這就是我正在尋找的!感謝tidyr圖書館的鏈接。 – AMisra