[英]How label min and max values per group in ggplot?
I have a dataset that counts number of posts per month per year.我有一个数据集,可以计算每年每月的帖子数。 Looks like that:
看起来像这样:
monthdate year n
<date> <dbl> <int>
1 2020-01-01 2001 133
2 2020-01-01 2002 129
3 2020-01-01 2003 149
4 2020-01-01 2004 96
5 2020-01-01 2005 94
6 2020-01-01 2006 109
7 2020-01-01 2007 158
8 2020-01-01 2008 138
9 2020-01-01 2009 83
( monthdate
as a date is needed only for rendering month names in ggplot). (仅在 ggplot 中呈现月份名称时才需要将
monthdate
作为日期)。
So the resulting plot is generated like that:所以生成的 plot 是这样生成的:
posts %>% mutate(monthdate = as.Date(paste("2020", month, '01', sep = "-"))) %>%
group_by(monthdate, year) %>% summarise(n = n()) %>%
ggplot(aes(x = monthdate, y = n)) +
geom_point(, stat = 'identity') +
geom_smooth(method = "loess") +
scale_x_date(date_breaks = "1 month", date_labels = "%b")
and looks like that:看起来像这样:
I want to give year labels for topmost and bottom most outliers, so for each month it can be seen which year produced the least and the most posts per month.我想为最顶部和最底部的异常值提供年份标签,因此每个月都可以看到哪个年份每月产生的帖子最少和最多。 What is the efficient way to do it?
什么是有效的方法?
Ok, I found the solution.好的,我找到了解决方案。 Pretty simple:
很简单:
posts %>% mutate(monthdate = as.Date(paste("2020", month, '01', sep = "-"))) %>%
group_by(monthdate, year) %>% summarise(n = n()) %>% group_by(monthdate) %>% mutate(lab=case_when(n==max(n)|n==min(n)~year))%>%
ggplot(aes(x = monthdate, y = n)) +
geom_point(, stat = 'identity') +
geom_smooth(method = "loess") +
scale_x_date(date_breaks = "1 month", date_labels = "%b") +
xlab('Month')+
ylab('Number of posts')+ geom_text(aes(label=lab))
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.