如何在ggplot2折线图中添加图例?

时间:2013-04-03 18:24:58

标签: r ggplot2 legend

我有一个简单的数据框:

> ih
  year    y1    y2
1 2005  4.50  4.92
2 2006  4.89  6.21
3 2007  6.63  6.68
4 2008  4.89  4.60
5 2009 16.56 15.16
6 2010 17.98 17.73
7 2011 25.92 19.85

我想绘制一个折线图,其中x轴为年,y1和y2为两条独立的线,黑色和不同的线型。如何获得一个图例,表明y1代表“Bob”而y2代表“Susan”?

这是我的尝试,它产生下图(没有图例):

ggplot(ih, aes(x = year)) + geom_line(aes(y=y1), linetype="dashed") + 
  geom_line(aes(y=y2)) + 
  labs(x="Year", y="Percentage", fill="Data") + 
  geom_point(aes(y=y1)) + 
  geom_point(aes(y=y2))

enter image description here

感谢您的帮助!今天是我第一天使用R!

1 个答案:

答案 0 :(得分:5)

您应该将数据转换为长格式,例如使用库melt()中的函数reshape2,然后使用variablelinetype=中定义aes()。因此传奇将自动生成。要删除图例中的名称variable,您可以添加scale_linetype("")

library(reshape2)
ih.long<-melt(ih, id.vars="year")

ih.long
   year variable value
1  2005       y1  4.50
2  2006       y1  4.89
3  2007       y1  6.63
4  2008       y1  4.89
5  2009       y1 16.56
6  2010       y1 17.98
....

ggplot(ih.long,aes(year,value,linetype=variable))+geom_line()+geom_point()+
    scale_linetype("")

enter image description here