我试图用ggplot2绘制三条不同的线,显示三个不同变量(最大,最小和平均温度)的时间序列。当我想为每一行/变量设置颜色时会出现问题。
ggplot命令:
plot.temp=ggplot(data,aes_string(x="date", y="Tmed",colour="Tmed")) + geom_line() +
geom_line(data=data,aes_string(x="date",y="Tmin",colour="Tmin")) +
geom_line(data=data,aes_string(x="date",y="Tmax",colour="Tmax"))
我不使用组,因为每行代表一次,而不是这里的可用类别。
我在scale_color_manual
等其他帖子中尝试了不同的optinos,但随后出现Continuous value supplied to discrete scale
错误消息
您可以在http://ubuntuone.com/45LqzkMHWYp7I0d47oOJ02找到可以使用data = read.csv(filename,header=T, sep=",",na.strings="-99.9")
我只想手动设置颜色线但找不到方法。
提前致谢。
答案 0 :(得分:4)
首先,您需要将date
转换为Date对象,因为现在它被视为因子。如果将日期视为因子,则将每个date
值假定为单独的组。
data$date<-as.Date(data$date)
其次,当您使用aes_string()
时,colour="Tmed"
也会被解释为依赖于实际Tmed
值的颜色。仅对aes()
变量使用colour=
和引号。此外,无需在每个data=
中重复geom_line()
个参数,因为您使用相同的数据框。
ggplot(data,aes(x=date, y=Tmed,colour="Tmed")) + geom_line() +
geom_line(aes(y=Tmin,colour="Tmin")) +
geom_line(aes(y=Tmax,colour="Tmax"))
当然,您也可以融化您的数据,然后您只需要进行一次geom_line()
通话(但仍需要更改日期列)。
library(reshape2)
data2<-melt(data[,1:4],id.vars="date")
ggplot(data2,aes(date,value,color=variable))+geom_line()