作者luenchang (luen)
看板R_Language
标题[问题] Color background of a ggplot2 bar plot
时间Sat Nov 25 10:53:22 2023
小弟的数据是自已Strava帐号上面下载的活动记录。我想要把2023年在各种活动中所花的
时间画个bar plot。2023有在3个不同的时区,所以也想把时区在图上利用背景色呈现出
来。目前已经画出bar plot,遇到的问题是我所用的 geom_rect()并没有把背景上色,好
像只有在背景色区块xmin, xmax各插入白色的bar. 和我参考stack overflow上有用
geom_rect() 改变背景色的图都不一样。不知道是geom_rect不适用於bar plot,还是我
的写法有错,或是有更简洁的其他的function可以改变背景色。
geom_rect()需要指定区块在x, y轴上的坐标,我的原始数据里并没有这个,为了使用
geom_rect(), 我手动产生 time.zones这个data.frame把每个时区的日期范围写死。如果
最後是用geom_rect()来改变背景色,也希望能用比较好的方式产生time.zones. 因为时
区Australia/Brisbane重复了3次,用 group_by()来拿出开始及结束日期的话,出来的数
据会去除掉重复的。这部分我也不知道该如何做。
我把画出来的图 (plot generated)
![color-date-ranges-by-timezones[1]have](
https://hackmd.io/_uploads/ryO8HRR4p.jpg)
想要的图 (plot desired)
![color-date-ranges-by-timezones[2]want](
https://hackmd.io/_uploads/rJVDBRCEp.jpg)
数据在Google drive 上的连结,及我的程式放在hackmd上
https://hackmd.io/@Chang/adverse-events-gantt-chart
感谢各位先进的指点
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 211.30.65.63 (澳大利亚)
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/R_Language/M.1700880804.A.300.html
1F:→ luenchang: 原本的问题出在於有两个fill= 要修改,但是只用了1个s 11/27 10:44
2F:→ luenchang: cale_fill_manual(). 加了ggnewscale::new_scale_fill 11/27 10:44
3F:→ luenchang: ()及第二个scale_fill_manual()後背景色有出来了。现 11/27 10:44
4F:→ luenchang: 在我的问题变成如何移除margin, 并且让x轴月份结束於2 11/27 10:44
5F:→ luenchang: 023 Dec, 第二个x轴结束於52. 11/27 10:44
6F:推 hohiyan: sec.axis的部份用sec_axis而不是dup_axis,然後: 11/28 00:27
8F:→ hohiyan: 土法链钢,也许有更有效的解法 11/28 00:30