使用ggplot2以不同的方式突出显示和着色特定的数据部分

问题描述 投票:0回答:1

我有数据,我已经能够将它放入ggplot图表(时间序列数据)。这些数据超过12年,某些时期的数据有特定的峰值(数据以周为单位)。我想尝试每年特定周的颜色代码,其中尖峰开始,但不知道从哪里开始。

我的想法是尖峰发生在1月超级碗发生时!,这将是week2001-01-01 - 2001-31-01是否有可能使用ggplot和相应的颜色代码对图表进行子集化。那么对于超级碗周使用不同的颜色?

即每年2001 - 2012颜色代码Jan (01-01) to (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

编辑:我附上图表澄清enter image description here

EDIT2:我附上了新的graphenter image description here

r ggplot2
1个回答
1
投票

你可以像qzxswpoi一样使用第二个geom

subset

在这里,我们使用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

© www.soinside.com 2019 - 2024. All rights reserved.