ggplot2多个stat_smooth:如何更改颜色和线型

6

我无法改变当前图形中多条平滑曲线(stat_smooth())的颜色和线型。

以下是数据结构概述:

     serviceInstanceName            timestamp     value
1    DE1Service-utilityPredicted    2014-02-22    10.000000
2    SE1Service-utilityPredicted    2014-02-22     4.385694
3    DE2Service-utilityPredicted    2014-02-22     0.000000
4    US1Service-utilityPredicted    2014-02-22     2.230000
5    DE1Service-utilityActual       2014-02-22    10.000000
6    SE1Service-utilityActual       2014-02-22     8.011919
7    DE2Service-utilityActual       2014-02-22     3.000000
8    US1Service-utilityActual       2014-02-22     1.325191
...

有八个独特的服务实例,每个实例都有相应的时间戳(y轴)和值(x轴)。

以下是代码:

ggplot(rmm, aes(x=timestamp, y=value, color=serviceInstanceName, group=serviceInstanceName)) 
+ stat_smooth(size=1.5, method = "loess", level = 0.95, fullrange = TRUE, se = FALSE)
+ scale_x_datetime(breaks = date_breaks("1 day"), labels = date_format("%a/%m"))
+ theme(axis.text.x = element_text(angle = 90, hjust = 1)) + xlab("Day") 
+ ylab("Utility") + ggtitle("Utility Trend")

这里是情节: http://imgur.com/Tk02YXC 我的要求是: => 手动更改每个独特的*serviceInstanceName'属性值的线型和颜色。我尝试了很多方法,从 scale_color_manual() .. 直到提取平滑器的值..但是实在解决不了这个问题。
任何帮助都会受到赞赏。谢谢!
1个回答

7

很抱歉,您提供的数据对于重新绘制图表并不太有帮助,所以我创建了一个不同的样本数据集。

rmm<-data.frame(
    timestamp = as.POSIXct(rep(seq(as.Date("2014-01-01"), 
        as.Date("2014-01-10"), by="1 day"),5)),
    serviceInstanceName = rep(letters[1:5], each=10),
    value = cumsum(rnorm(50))
)

我不确定你尝试了什么,但 scale_color_manual 应该可以工作。如果你想改变线条类型,需要在 aes() 中设置。

library(ggplot2)
library(scales)

ggplot(rmm, aes(x=timestamp, y=value, 
    color=serviceInstanceName, linetype=serviceInstanceName)) +
stat_smooth(size=1.5, method = "loess", level = 0.95, 
    fullrange = TRUE, se = FALSE) + 
scale_x_datetime(breaks = date_breaks("1 day"), 
    labels = date_format("%a/%m")) + 
theme(axis.text.x = element_text(angle = 90, hjust = 1)) + xlab("Day")  + 
ylab("Utility") + ggtitle("Utility Trend") + 
scale_color_manual(values=c(a="orange",b="yellow",
    c="red", d="sienna",e="cornsilk"))

enter image description here


谢谢!你的解决方案有效了。在我的情况下,我只需要调整:scale_color_manual(values=c('DE1Service-utilityPredicted'='#3182bd'... (y) - philka

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接