我有一个简单的数据框:
> 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))
感谢您的帮助!今天是我第一天使用R!
答案 0 :(得分:5)
您应该将数据转换为长格式,例如使用库melt()
中的函数reshape2
,然后使用variable
在linetype=
中定义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("")