r - ggplot时间序列间隔堆积条
问题描述
我有一个庞大的数据文件,我按人将其分解为日块,然后绘制白天发生的事件以及这些事件的持续时间(A、B 或 C)
数据结构如下: t_z 是行之间的间隔, period 是事件变量,这个例子是一个人一天(实际数据是 xdays xpersons)
intervals <- c(0,5.1166667,6.2166667,3.5166667,0.06666667,3.0666667,6.3,
2.3833333,0.06666667,4.7,18.666667,17.383333,21.533333,
0.1,0.08333333,0.85)
period <- c("C", "B", "A", "B", "C", "B", "C", "B",
"C", "B", "C", "B", "C", "B", "C", "B")
i <- as.data.frame(intervals)
p <- as.data.frame(period)
d <- cbind(i,p)
获得条形图很容易,但它按天将所有“周期”堆叠成块:
d$id<-1
e <- ggplot(d,aes(id))
e + geom_bar(aes(fill=period))
但是,我希望每个“周期”都可以离散地表示,并用它的大小来表示:
谢谢YBS,但你的方法很接近,但周期的大小不正确有什么想法吗?第一个 C=5 和第一个 A=5 大小不一样?
intervals <- c(5, 15, 5, 3,7,3,6, 2)
period <- c("C","B","A","B","C","B","C","B")
d <- data.frame(intervals,period)
colors=c("red","blue","green")
dc <- data.frame(period=unique(d$period),colors)
d2 <- d %>% mutate(nid = paste0(d$period,'_',row_number()))
d3 <- left_join(d2,dc, by="period")
d3$id<-1
e <- ggplot(d3,aes(x=id, y=intervals)) +
geom_col(aes(fill=nid))
e + scale_fill_manual(name='period', labels=d3$period, values=d3$colors )
解决方案
诀窍是newid
用所有离散值创建一个,然后通过 恢复到初始周期值scale_fill_manual
。您可以使用coord_flip()
使其水平并根据需要更改图例位置。也许这是期望的输出。
intervals <- c(0, 5.1166667, 6.2166667, 3.5166667,0.6666667,3.0666667,6.3, 2.3833333)
#,0.06666667 , 4.7,18.666667,17.383333,21.533333, 0.1,0.08333333,0.85)
period <- c("C", "B", "A", "B", "C", "B", "C", "B")
# ,"C", "B", "C", "B", "C", "B", "C", "B")
d <- data.frame(intervals,period)
colors=c("red", "blue","green")
dc <- data.frame(period=unique(d$period),colors)
d2 <- d %>% mutate(nid = paste0(d$period,'_',row_number()))
d3 <- left_join(d2,dc, by="period")
d3$id<-1
e <- ggplot(d3,aes(x=id, y=intervals)) +
geom_col(aes(fill=nid))
e + scale_fill_manual(name='period', labels=d3$period, values=d3$colors )
推荐阅读
- python - SymPy:如何在 Google Colab 的一个单元格中输出多个 LaTex 方程?
- android - ImageView 只有底角或顶角是圆角的
- javascript - TypeError:ConnectionConfig 不是构造函数
- java - Struts OGNL 长溢出
- video-streaming - Netflix 是否使用 WebRTC 进行视频流式传输
- mongodb - 我们可以用spring boot连接多个mongoDB数据源吗
- travis-ci - 将工作服报告从 Travis-CI 迁移到 GitHub Actions
- csvhelper - CsvHelper C# 日期时间格式 dd/mm/yyyy
- spring - Docker 上的 Spring 属性误读
- c - curl 使用自定义函数附加 slist