ggplot中带trans_format的scale_y_log10标签如何设为粗体
ggplot2 log10 y轴刻度同时实现粗体+正确数学格式的修改方法
你当前的代码没有让刻度指数正确跟随粗体的核心原因是:math_format(10^.x)生成的普通plotmath表达式,无法被theme里全局设置的文本粗体属性完全作用,会出现指数部分格式丢失、不显示为粗体的问题。
原有问题代码
scale_y_log10(breaks = trans_breaks("log10",function(x) 10^x), labels = trans_format("log10",math_format(10^.x)), limits=c(0.00005,5))
修改后代码
不需要调整刻度断点、坐标范围的原有逻辑,只需要在数学格式定义时给整体表达式加上bold()标记,就能同时实现刻度标签粗体、保留10的指数次幂的标准数学排版:
scale_y_log10(breaks = trans_breaks("log10", function(x) 10^x), labels = trans_format("log10", math_format(bold(10^.x))), limits = c(0.00005, 5))
注意事项
- 上述代码用到的
trans_breaks、trans_format、math_format均来自scales包,运行前请确认已加载该包,或通过scales::函数名的格式调用避免函数冲突。 - 不推荐通过
theme(axis.text.y = element_text(face = "bold"))的方式设置对数轴刻度粗体,这种方式对plotmath渲染的数学表达式兼容性差,很容易出现指数部分排版错位、不跟随粗体的问题,直接在math_format内定义粗体是兼容性最好的方案。
内容的提问来源于stack exchange,提问作者aya9190
相关产品推荐
相关产品推荐

