如何增大gg_vistime绘制时间线图的Y轴条形厚度
调整gg_vistime时间线Y轴条形厚度的方法
gg_vistime生成的是标准ggplot2对象,通过以下两种方式都可以调大条形厚度,解决条形过细的问题:
- 方法1:使用函数自带参数调整(推荐)
gg_vistime原生提供bar_height参数控制时间范围条形在Y轴方向的相对厚度,取值范围为0~1,默认值为0.7,数值越大条形越宽;单点类事件的尺寸可以同步通过point_size参数调整,和厚条形的视觉效果匹配。
直接修改绘图代码即可生效:
当library(vistime) # 示例数据读取逻辑不变 data <- read.csv(text="event,group,start,end,color Phase 1,Project,2016-12-22,2016-12-23,#c8e6c9 Phase 2,Project,2016-12-23,2016-12-29,#a5d6a7 Phase 3,Project,2016-12-29,2017-01-06,#fb8c00 Phase 4,Project,2017-02-06,2017-03-02,#DD4B39 Room 334,Team 1,2016-12-22,2016-12-28,#DEEBF7 Room 335,Team 1,2016-12-28,2017-01-05,#C6DBEF Room 335,Team 1,2017-01-05,2017-01-23,#9ECAE1 Group 1,Team 2,2016-12-22,2016-12-28,#E5F5E0 Group 2,Team 2,2016-12-28,2017-01-23,#C7E9C0 3-200,category 1,2016-12-25,2016-12-25,#1565c0 3-330,category 1,2016-12-25,2016-12-25,#1565c0 3-223,category 1,2016-12-28,2016-12-28,#1565c0 3-225,category 1,2016-12-28,2016-12-28,#1565c0 3-226,category 1,2016-12-28,2016-12-28,#1565c0 3-226,category 1,2017-01-19,2017-01-19,#1565c0 3-330,category 1,2017-01-19,2017-01-19,#1565c0 1-217.0,category 2,2016-12-27,2016-12-27,#90caf9 4-399.7,moon rising,2017-01-13,2017-01-13,#f44336 8-831.0,sundowner drink,2017-01-17,2017-01-17,#8d6e63 9-984.1,birthday party,2016-12-22,2016-12-22,#90a4ae F01.9,Meetings,2016-12-26,2016-12-26,#e8a735 Z71,Meetings,2017-01-12,2017-01-12,#e8a735 B95.7,Meetings,2017-01-15,2017-01-15,#e8a735 T82.7,Meetings,2017-01-15,2017-01-15,#e8a735") # bar_height设为0.9时条形已经足够饱满,可根据需求在0.7~1之间调整 gg_vistime(data, bar_height = 0.9, point_size = 4)bar_height设为1时,相邻Y轴分类的条形会完全贴合,没有空隙,可根据自己的排版需求选择数值。 - 方法2:手动覆写ggplot图层参数(适配旧版本包)
如果使用的vistime包版本较旧,没有内置bar_height参数,可以在生成基础图表后,直接修改对应几何图层的参数实现效果:library(ggplot2) p <- gg_vistime(data) # 遍历图层调整矩形条厚度和单点尺寸 for(i in seq_along(p$layers)){ if(inherits(p$layers[[i]]$geom, "GeomRect")){ p$layers[[i]]$aes_params$ymin <- after_stat(y - 0.45) p$layers[[i]]$aes_params$ymax <- after_stat(y + 0.45) } if(inherits(p$layers[[i]]$geom, "GeomPoint")){ p$layers[[i]]$aes_params$size <- 4 } } # 压缩Y轴多余边距,让整体视觉更协调 p + scale_y_discrete(expand = expansion(add = c(0.1, 0.1)))
注意:不要将条形厚度设置过大,否则相邻分类的内容会互相重叠,降低图表可读性。
内容的提问来源于stack exchange,提问作者renit Anthony
相关产品推荐
相关产品推荐

