首页 文章

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

提问于
浏览
1

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

我不使用组,因为每行代表一次,这里没有可用的类别 .

我尝试过在另一个帖子中找到的不同的optinos,如 scale_color_manual ,但随后会出现 Continuous value supplied to discrete scale 错误消息

您可以在http://ubuntuone.com/45LqzkMHWYp7I0d47oOJ02找到可以使用 data = read.csv(filename,header=T, sep=",",na.strings="-99.9") 轻松阅读的数据文件

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

提前致谢 .

1 回答

  • 4

    首先,您需要将 date 转换为Date对象,因为现在它被视为因子 . 如果将日期视为因子,则将每个 date 值假定为单独的组 .

    data$date<-as.Date(data$date)
    

    其次,当你使用 aes_string() 时, colour="Tmed" 被解释为依赖于实际 Tmed 值的颜色 . 使用 aes() 并仅为 colour= 变量引用 . 此外,无需在每个 geom_line() 中重复 data= 参数,因为您使用相同的数据帧 .

    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

相关问题