首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在条形图中按年间隔汇总数据

在条形图中按年间隔汇总数据
EN

Stack Overflow用户
提问于 2017-11-04 16:51:52
回答 2查看 384关注 0票数 0

我想在条形图中按年份间隔汇总数据。基于此answer,我编写了以下代码:

代码语言:javascript
复制
years <- seq(as.Date('1970/01/01'), Sys.Date(), by="year")
set.seed(111)
effect <- sample(1:100,length(years),replace=T) 
data <- data.frame(year=years, effect=effect)
ggplot(data, aes(year, effect)) + geom_bar(stat="identity", aes(group=cut(year, "5 years")))

但是,只有刻度线会受到影响,但数据不会按时间间隔求和。我是否可以让ggplot2在不对数据进行预处理的情况下对数据求和,同时保持刻度线和标签的原样?

编辑:抱歉,我没说清楚。我希望保持刻度线和标签的原样,即刻度线位于每条线的左侧边缘(现在覆盖了5年),并且标签中只有年份。这是基于上面链接答案的外观。

EN

回答 2

Stack Overflow用户

发布于 2017-11-04 17:59:40

做你想做的事情的方式有点老套:

代码语言:javascript
复制
ggplot(data, aes(cut(year, "5 years"), effect)) +
  geom_col() +
  xlab("year")

它的实际用途:它绘制多个列(条),高度等于effect,但根据5年间隔标识符堆叠在一起。换句话说,在绘图中,实际上有48个条形,一种颜色,但排列在彼此的顶部。

票数 0
EN

Stack Overflow用户

发布于 2017-11-04 18:28:49

试试这个:

代码语言:javascript
复制
library(tidyverse)

df %>% 
  mutate(index = ceiling(seq_along(years) / 5)) %>% 
  group_by(index) %>% 
  mutate(sum_effect = sum(effect)) %>% 
  distinct(sum_effect, .keep_all = TRUE) %>% 
  ggplot(aes(year, sum_effect)) +
  geom_col()

它返回:

我更喜欢转换数据集,这样我就不需要使用ggplot2做任何花哨的事情

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47109047

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档