如何修改vistime对象内部字体?当前仅坐标轴字体生效
修改vistime图表内部字体的解决方案
你遇到的问题是因为gg_vistime生成的事件标签文本是通过geom_text图层绘制的,这些图层的字体配置不会自动继承theme()里的text设置,所以只改theme只能影响坐标轴字体。
下面提供两种可行的解决方法:
方法一:手动修改图层参数(通用所有版本)
遍历图表的图层,找到所有geom_text类型的图层,直接指定其字体家族:
library(vistime) library(ggplot2) dat <- data.frame( event = 1:4, start = c("2019-01-01", "2019-01-10", "2019-01-05", "2019-01-15") ) # 生成基础图表并设置坐标轴字体 p <- gg_vistime(dat) + theme(text = element_text(family = "serif")) # 修改内部事件文本的字体 for(i in seq_along(p$layers)){ if(inherits(p$layers[[i]]$geom, "GeomText")){ p$layers[[i]]$aes_params$family <- "serif" } } # 查看修改后的图表 p
方法二:使用函数内置参数(适用于vistime 0.9.2及以上版本)
如果你的vistime版本足够新,可以直接在gg_vistime函数中通过text.family参数指定内部文本字体,再配合theme统一坐标轴字体:
library(vistime) dat <- data.frame( event = 1:4, start = c("2019-01-01", "2019-01-10", "2019-01-05", "2019-01-15") ) p <- gg_vistime(dat, text.family = "serif") + theme(text = element_text(family = "serif")) p
这两种方法都能让图表的坐标轴和内部事件文本统一使用指定的字体。
内容的提问来源于stack exchange,提问作者Karl A
相关产品推荐
相关产品推荐

