首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用ggplot2同时绘制时间序列和预测

使用ggplot2同时绘制时间序列和预测
EN

Stack Overflow用户
提问于 2014-09-25 23:47:11
回答 2查看 9.2K关注 0票数 10

我有一个带有预测和置信区间数据的时间序列,我想用ggplot2同时绘制它们。我是通过下面的代码来实现的:

代码语言:javascript
复制
set.seed(321)
library(ggplot2)
#create some dummy  data similar to mine

sample<-rnorm(350)
forecast<-rnorm(24)
upper<-forecast+2*sd(forecast)
lower<-forecast-2*sd(forecast)


## wrap data into a data.frame
df1 = data.frame(time = seq(325,350,length=26), M = sample[325:350], isin = "observations")
df2 = data.frame(time = seq(351,374,length=24), M = forecast , isin = "my_forecast")
df3 = data.frame(time = seq(351,374,length=24), M = upper ,isin = "upper_bound")
df4 = data.frame(time = seq(351,374,length=24), M = lower, isin = "lower_bound")
df = rbind(df1, df2, df3, df4)

## ggplot object 
ggplot(df, aes(x = time, y = M, color = isin)) + geom_line()

如何将上下线条合并为一种颜色?另外,如何设置预测和采样的特定颜色?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-09-26 00:56:24

使用scale_colour_manual

代码语言:javascript
复制
ggplot(df, aes(x = time, y = M, color = isin)) + geom_line() + 
    scale_colour_manual(values=c(observations='blue', my_forecast='red', upper_bound='black', lower_bound='black'))

编辑

这是另一种选择,灵感来自@rnso answer。

代码语言:javascript
复制
ggplot(df1, aes(x = time, y = M)) + geom_line(colour='blue') +
    geom_smooth(aes(x=time, y=M, ymax=upper_bound, ymin=lower_bound), 
                colour='red', data=df5, stat='identity')

票数 6
EN

Stack Overflow用户

发布于 2014-09-26 01:04:24

以下内容可能会有所帮助:

代码语言:javascript
复制
ggplot() + 
  geom_line(data=df1, aes(x = time, y = M, color = isin)) + 
  stat_smooth(data=df2, aes(x = time, y = M, color = isin))

也可以在stat_smooth()中使用'method'选项

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26042774

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档