ggplot主题修改特定字体字号时触发报错问题求助
解决ggplot使用Calibri特定字号报错的问题
问题根源
这是RStudio默认的AGG图形后端对Calibri字体的9/10/12号字号存在渲染兼容性bug,导致触发polygon edge not found (zero-width or zero-height?)错误。
解决方案
临时切换图形后端(无需重启)
手动切换到兼容性更好的后端,运行绘图代码前执行:# Windows系统切换到原生后端 windows.options(device = "windows") # 跨平台可选Cairo后端 library(Cairo) options(device = "CairoPNG")之后再执行ggplot代码即可正常渲染,效果接近AGG。
永久修改RStudio后端设置
打开RStudio设置:Tools -> Global Options -> General -> Graphics,在Backend下拉菜单选择Windows(Windows)或Quartz(Mac),取消勾选AGG,重启RStudio后生效。微调字号/行高规避bug
不用切换后端,给字号加微小偏移或调整行高即可绕过问题:ggplot(data, aes(Petal.Length, Petal.Width, color = Species)) + geom_point() + labs(x = "len", y = "wid", title = "iris") + theme(plot.title = element_text(family = "Calibri", size = 9.1, lineheight = 1.05))重新注册系统字体
若字体未正确加载,用extrafont包重新注册Calibri:library(extrafont) # 首次运行需导入系统字体(耗时较长) font_import(pattern = "Calibri") loadfonts(device = "win") # Windows系统 # 绘图时直接指定字体即可 ggplot(data, aes(Petal.Length, Petal.Width, color = Species)) + geom_point() + labs(x = "len", y = "wid", title = "iris") + theme(plot.title = element_text(family = "Calibri", size = 9))
内容的提问来源于stack exchange,提问作者DDaye
相关产品推荐
相关产品推荐

