将geom_rect()添加到ggplot2中的时间序列数据
我有一个条形图,它使用x轴的时间序列数据,其中每个条形图代表7天 以下是数据帧的前几行:将geom_rect()添加到ggplot2中的时间序列数据,r,ggplot2,time-series,R,Ggplot2,Time Series,我有一个条形图,它使用x轴的时间序列数据,其中每个条形图代表7天 以下是数据帧的前几行: # A tibble: 40 x 5 # Groups: group [26] group thing minDate count dateRange <drtn> <dbl> <date> <dbl> <chr> 1 1 days 0 2019-04-02
# A tibble: 40 x 5
# Groups: group [26]
group thing minDate count dateRange
<drtn> <dbl> <date> <dbl> <chr>
1 1 days 0 2019-04-02 39 Apr 02 - Apr 08
2 2 days 0 2019-04-09 39 Apr 09 - Apr 15
3 3 days 0 2019-04-16 39 Apr 16 - Apr 22
4 4 days 0 2019-04-23 39 Apr 23 - Apr 29
5 5 days 0 2019-04-30 39 Apr 30 - May 06
工作图:
library(ggplot2); library(magrittr)
test %>%
ggplot(aes(x = minDate,
y = thing)) +
geom_bar(stat = "identity") +
scale_x_date(breaks = seq(min(test$minDate),
max(test$minDate),
by = paste0(7, " days")),
date_labels = unique(test$dateRange)) +
theme(axis.text.x = element_text(angle = 90, hjust = 1, size = 10))
我不确定您想要的输出应该是什么样子,但这只需要您自己进行一些调整: 联吡啶酯 图书馆弹琴 recs% 过滤器计数==0%>% mutatexmin=minDate-days3, xmax=minate+days3 测试%>% ggplotaesx=minDate, y=东西+ 长方形在栅栏后面 geom_rectdata=recs, 矩形的一些固定高度 aesxmin=xmin,xmax=xmax,ymin=0,ymax=0.7, 填充=红色,颜色=白色,alpha=0.2+ geom_barstat=标识+ scale_x_datebreaks=seqmintest$minDate, maxtest$minDate, 截止日期=07,天, 日期标签=唯一的$dateRange+ themeaxis.text.x=element\u textangle=90,hjust=1,size=10
我不确定您想要的输出应该是什么样子,但这只需要您自己进行一些调整: 联吡啶酯 图书馆弹琴 recs% 过滤器计数==0%>% mutatexmin=minDate-days3, xmax=minate+days3 测试%>% ggplotaesx=minDate, y=东西+ 长方形在栅栏后面 geom_rectdata=recs, 矩形的一些固定高度 aesxmin=xmin,xmax=xmax,ymin=0,ymax=0.7, 填充=红色,颜色=白色,alpha=0.2+ geom_barstat=标识+ scale_x_datebreaks=seqmintest$minDate, maxtest$minDate, 截止日期=07,天, 日期标签=唯一的$dateRange+ themeaxis.text.x=element\u textangle=90,hjust=1,size=10
下面似乎给出了我认为你的目标。请注意,geom_tile与geom_rect非常相似,但参数化为x/y/width/height,而不是xmin/xmax/ymin/ymax。因此,我们可以为每个计数==0制作一系列平铺
下面似乎给出了我认为你的目标。请注意,geom_tile与geom_rect非常相似,但参数化为x/y/width/height,而不是xmin/xmax/ymin/ymax。因此,我们可以为每个计数==0制作一系列平铺
那几个星期应该有两排吗?如果是这样,我将使用dplyr::summary进行聚合 图书馆;图书馆GGPLOT2 断裂x% dplyr::总结 半透明的, y=最大值 %>% dplyr::解组 标签x% ggplotaesx=minDate,y=y,填充=半透明+ geom_barstat=标识+ 比例x\u日期中断=中断x,日期标签=标签x+ 比例\填充\手动值=调色板\半透明+ themeaxis.text.x=element\u textangle=90,hjust=1,size=10+ labsfill=计数为零 我的解释不同于@teunbrand,即每个时间段一个矩形和@wusel,即时间段的ymax,而不是样本。如果我们都有误解,请描述一下如何理解 编辑:如果您想要@wusel的方法,可以跳过最大值计算,改用Inf,这是ggplot进入可见比例顶部的快捷方式
休息时间是不是应该有两排?如果是这样,我将使用dplyr::summary进行聚合 图书馆;图书馆GGPLOT2 断裂x% dplyr::总结 半透明的, y=最大值 %>% dplyr::解组 标签x% ggplotaesx=minDate,y=y,填充=半透明+ geom_barstat=标识+ 比例x\u日期中断=中断x,日期标签=标签x+ 比例\填充\手动值=调色板\半透明+ themeaxis.text.x=element\u textangle=90,hjust=1,size=10+ labsfill=计数为零 我的解释不同于@teunbrand,即每个时间段一个矩形和@wusel,即时间段的ymax,而不是样本。如果我们都有误解,请描述一下如何理解 编辑:如果您想要@wusel的方法,可以跳过最大值计算,改用Inf,这是ggplot进入可见比例顶部的快捷方式
breaks_x映射geom_tile中的宽度参数正是我想要的。我没有想到要使用这个geom层。从geom_tile映射宽度参数正是我想要的。我没想到要用这个几何图层。
library(ggplot2); library(magrittr)
test %>%
ggplot(aes(x = minDate,
y = thing)) +
geom_bar(stat = "identity") +
scale_x_date(breaks = seq(min(test$minDate),
max(test$minDate),
by = paste0(7, " days")),
date_labels = unique(test$dateRange)) +
theme(axis.text.x = element_text(angle = 90, hjust = 1, size = 10))
ggplot(test, aes(x = minDate,
y = thing)) +
geom_tile(data = test[test$count == 0, ],
aes(x = minDate,
y = 0.5 * max(test$thing),
# A width of 7 days
width = 7,
height = max(test$thing)),
alpha = 0.2) +
geom_bar(stat = "identity") +
scale_x_date(breaks = seq(min(test$minDate),
max(test$minDate),
by = paste0(7, " days")),
date_labels = unique(test$dateRange)) +
theme(axis.text.x = element_text(angle = 90, hjust = 1, size = 10))