R ggplot2按变量设置颜色线而不进行分组

时间:2013-12-17 12:31:12

标签: r ggplot2

我试图用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")

轻松阅读的数据文件

我只想手动设置颜色线但找不到方法。

提前致谢。

1 个答案:

答案 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()

enter image description here