我有数据,我已经能够将它放入ggplot图表(时间序列数据)。这些数据超过12年,某些时期的数据有特定的峰值(数据以周为单位)。我想尝试每年特定周的颜色代码,其中尖峰开始,但不知道从哪里开始。
我的想法是尖峰发生在1月超级碗发生时!,这将是week
列2001-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
你可以像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