作者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/m.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