使用ggtext::element_textbox_simple设置竖排衬线文本被压缩的解决方法
修复ggtext竖排Y轴标签字符压缩问题
用ggtext::element_textbox_simple实现竖排Y轴长标签(衬线字体)时,常会出现字符间距过窄的压缩问题。以下是可复现问题的代码:
library(tidyverse) library(ggtext) ggplot(mtcars, aes(disp, mpg)) + geom_point() + ylab('Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt') + theme_minimal(base_family = 'serif') + theme( axis.y.title = element_textbox_simple(orientation = 'left-rotated', halign = .5, margin = margin(5, 0, 15, 0)) )
解决办法
给文本框指定宽度,让长文本自动换行,再调整行高优化间距即可:
library(tidyverse) library(ggtext) ggplot(mtcars, aes(disp, mpg)) + geom_point() + ylab('Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt') + theme_minimal(base_family = 'serif') + theme( axis.y.title = element_textbox_simple(orientation = 'left-rotated', halign = .5, margin = margin(5, 0, 15, 0), # 设置文本框宽度,强制文本换行避免挤压 width = unit(2.5, "cm"), # 调整行高,让竖排字符间距更舒展 lineheight = 1.2) )
原理说明
element_textbox_simple默认会自适应容器宽度压缩文本,指定width参数后,文本会在设定宽度内自动换行,不会挤在一起;竖排场景下,lineheight参数控制字符间的垂直间距,调大后能让排版更舒适。
内容的提问来源于stack exchange,提问作者Łukasz Deryło
相关产品推荐
相关产品推荐

