R 使用ggplot2以不同方式高亮显示和着色特定数据段
我有数据,我已经能够把它放进一个ggplot图(时间序列数据)。数据超过12年,并且在某些时期(数据以周为单位)数据中存在特定峰值。我想试着在每年的某个特定的一周对尖峰开始的地方进行颜色编码,但不知道从哪里开始 我的想法是,当超级碗在一月份举行的时候,这个峰值就出现了!,这将是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
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
我用一月份的输出编辑了我的原始问题。看起来对我来说是正确的。也许你应该把创建数据和绘图的步骤分开。谢谢你,不管怎样,结果看起来都很好:)我会按照你的建议试着分开