R 使用ggplot2以不同方式高亮显示和着色特定数据段

R 使用ggplot2以不同方式高亮显示和着色特定数据段,r,ggplot2,R,Ggplot2,我有数据,我已经能够把它放进一个ggplot图(时间序列数据)。数据超过12年,并且在某些时期(数据以周为单位)数据中存在特定峰值。我想试着在每年的某个特定的一周对尖峰开始的地方进行颜色编码,但不知道从哪里开始 我的想法是,当超级碗在一月份举行的时候,这个峰值就出现了!,这将是week列2001-01-01-2001-31-01是否可以使用ggplot对周期进行子集划分,并相应地对图表进行颜色编码。那么超级碗周用不同的颜色 i、 e.每年2001-2012颜色代码Jan(01-01)到(01-3

我有数据,我已经能够把它放进一个ggplot图(时间序列数据)。数据超过12年,并且在某些时期(数据以周为单位)数据中存在特定峰值。我想试着在每年的某个特定的一周对尖峰开始的地方进行颜色编码,但不知道从哪里开始

我的想法是,当超级碗在一月份举行的时候,这个峰值就出现了!,这将是
week
2001-01-01-2001-31-01
是否可以使用ggplot对周期进行子集划分,并相应地对图表进行颜色编码。那么超级碗周用不同的颜色

i、 e.每年
2001-2012
颜色代码Jan
(01-01)到(01-31)
例如红色。这是4周的数据。我现在拥有的是,

df[, .(df_sales = (sum(qty) * (EUR))), by = week] %>%
  ggplot(aes(x = week, y = df_sales)) +
  labs(x = 'wks', title = 'TS plot of qty x eur')
这给了我一个很好的情节,但我想对尖峰进行颜色编码(即,我的假设是它们发生在1月,即超级碗周)。如有必要,我可以张贴图表进行澄清

     ID     unit  qty    NA    EUR     KEY      identity       week
1: 1123539 1147     1     GR    2.39  652159 10090100003 2001-08-20
2: 3102228 1129     1     GR    2.15  257871 10090100003 2001-04-16
3: 3321265 1129     1     GR    2.15  257871 10090100003 2001-04-16
4: 3321265 1122     1     GR    2.15  257871 10090100004 2001-02-26
5: 1120774 1151     1     GR    2.39  213290 10090100005 2001-09-17
6: 1145763 1157     1     GR    2.39  213290 10090100005 2001-10-29
编辑:我附上图表进行澄清


EDIT2:我附加了新的图形

您可以将第二个
geom
子集
结合使用,如下所示:

library(lubridate)
ggplot(df, aes(x = week, y = df_sales)) + 
  geom_bar(stat = "identity") + 
  geom_bar(data = subset(df, month(week) == "1"), stat = "identity", col = "red") +
  labs(x = 'wks', title = 'TS plot of qty x eur') 
这里我们使用
lubridate::month
检查哪一行属于1月份的一周

对于一些虚构的随机数据:


谢谢你的回复,这看起来很棒,正是我想要的。当我试图在自己的数据上复制这一点时,我只能绘制红色部分,即1月份的部分
g%ggplot(aes(x=DATE,y=total_sales))+geom_bar(数据=子集(total,month(DATE)=“1”),stat=“identity”,col=“red”)+geom_bar(fill='steelblue',stat=“identity”)+labs(x='Week',title='sales(qt*P)12年)g
我用一月份的输出编辑了我的原始问题。看起来对我来说是正确的。也许你应该把创建数据和绘图的步骤分开。谢谢你,不管怎样,结果看起来都很好:)我会按照你的建议试着分开