2016-11-27 80 views
3

我一直在试图给我的ggplot添加图例,但失败了。我试过功能scale_colour_manual(),但图例没有显示出来。将传说添加到geom_line()图中

ggplot()+ 
geom_line(data=Summary,aes(y=Y1,x= X),colour="darkblue",size=1)+ 
geom_line(data=Summary,aes(y=Y2,x= X),colour="red",size=1 ) 

我的数据框“摘要”如下:

X   Y1   Y2 
139 1.465477e+16 7.173075e+15 
277 1.044803e+16 9.275002e+15 
415 1.059258e+16 8.562518e+15 
553 1.033283e+16 8.268984e+15 
691 9.548019e+15 1.022248e+16 
830 1.008212e+16 8.641891e+15 
968 9.822061e+15 9.315856e+15 
1106 9.948143e+15 9.178694e+15 
1244 1.013922e+16 8.825904e+15 
1382 9.815094e+15 9.283662e+15 

请告诉我如何绘制Y1,Y2对X在同一个图形和侧面添加一个传奇。

回答

9

ggplot需要aes来制作图例,在aes(...)里面移动colour会自动生成图例。那么我们就可以通过scale_color_discrete调整图例标签:

ggplot()+ 
    geom_line(data=Summary,aes(y=Y1,x= X,colour="darkblue"),size=1)+ 
    geom_line(data=Summary,aes(y=Y2,x= X,colour="red"),size=1) + 
    scale_color_discrete(name = "Y series", labels = c("Y2", "Y1")) 

enter image description here

+1

Nathan,谢谢您的回复。在aes()作品中放置颜色。我不希望我自己想象出来! – ausworli

1

为了提供更紧凑的答案,只使用一个单一的geom电话:

ggplot2真的喜欢长数据(键值对)比宽(很多列)要好。这需要您在使用像tidyrreshape2这样的包进行绘图之前转换数据。这样你可以在你的aes调用中有一个表示颜色的变量,这将产生图例。

为您的数据:

library(tidyr) 
library(ggplot2) 

plot_data <- gather(data, variable, value, -x) 

ggplot(plot_data, aes(x = x, y = value, color = variable)) + 
    geom_line() 

您可以然后通过scale_color系列佣工自定义图例。