r - 如何在R中绘制时间序列数据,根据因子数据改变背景?

标签 r plot ggplot2 time-series

假设我有一些时间序列数据,如下所示:

df <- data.frame(Month=seq(1,12),
                 Value = rnorm(12,0,1),
                 Season = c('Winter', 'Winter', 'Spring',
                            'Spring', 'Spring', 'Summer',
                            'Summer', 'Summer', 'Fall',
                            'Fall', 'Fall', 'Winter'))

我想绘制随时间变化的值(value)并显示它与季节的关系。绘制值很容易,例如:

ggplot(data, aes(Month, Value)) + geom_line()

在 ggplot 或基础图形中:

plot(Value~Month, data=df, type='l')

我想做的是强制叠加一个因素。我想根据 x 轴上的月份更改背景颜色。所以,在我的例子中,左边的 1/6 是冬天的白色,然后向右移动的下一个三分之一是 Spring 的黄色,然后下一个三分之一是夏天的红色,依此类推,直到最右边的 1/12 又是白色.

对于时间序列数据来说,这些似乎应该是简单易行的事情,但我在任何图形包中都找不到有关如何执行此操作的任何帮助。任何建议或见解将不胜感激!

最佳答案

在基本 R 中,您可以执行以下操作:

plot(Value~Month, type="n")
rect(df$Month-0.5, min(df$Value), df$Month+0.5, max(df$Value), col=df$Season, lty=0)
lines(Value~Month, data=df, type='l', col="orange", lwd=2)

并为可怕的基色方案道歉,我将把它放在这里来说明:

Color Coded Background

要在 ggplot2 中执行相同的操作,您可以执行以下操作:

ggplot(df, aes(Month, Value, Season)) + 
  geom_rect(aes(NULL, NULL, 
    xmin=Month-0.5, xmax=Month+0.5, 
    ymin=min(Value), ymax=max(Value), 
    fill=Season
  )) + 
  geom_line()

产生以下结果:

enter image description here

关于r - 如何在R中绘制时间序列数据,根据因子数据改变背景?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31036670/

相关文章:

r - formatDistData(),距离必须为数字

r - 接收面板比例/布局信息的刻面标签器功能

r - 如何在 R 中添加带有透视图的颜色条

r - 如何向嵌入 ggplot 图的函数添加 coord_flip 参数

r - 如何使用 R 的 ggplot2 包更改条形图的颜色?

r - 不适合线性 R(我哪里出错了?)

r - 计算与 R 数据框中特定因素相关的值

r - 如何删除旧的 R 基础包? (R studio 更新后不工作)

python - 计算两个 CDF 的最大逐点距离

r - 在 R 中向 ggsurvplot 添加一条垂直直线