ggplot2搭配ggtext设置轴标签上划线不生效如何解决
问题原因
ggtext 内置的markdown渲染器默认不支持解析text-decoration: overline这类CSS文本装饰属性,因此直接在span标签内写该样式无法正常渲染上划线,会出现上划线缺失的异常效果:
可用解决方案
方案1:用顶部边框样式模拟上划线(保留ggtext HTML自定义能力)
element_markdown()支持边框类CSS属性,可以给文本所在span加1px的顶部边框、搭配1px左右的顶部内边距,实现和原生上划线完全一致的效果,同时保留其他文本自定义样式(比如后续文本的绿色设置)的渲染能力,可直接运行的代码如下:
library(ggplot2) library(ggtext) data("iris") ggplot(iris, aes(Sepal.Length, Sepal.Width)) + geom_point() + xlab("<span style = 'border-top: 1px solid #000000; padding-top: 1px;'>Sepal</span> <span style = 'color: #00e000;'>Length</span>") + theme(axis.title.x = element_markdown())
运行后Sepal文本上方会正常显示黑色上划线,Length文本的绿色样式也会正常渲染,和预期效果完全匹配。
方案2:使用R原生plotmath语法(无需额外CSS兼容处理)
如果不需要复杂的HTML样式自定义,可以直接用ggplot2原生支持的plotmath表达式实现上划线,不需要依赖ggtext的HTML解析能力,兼容性更稳定:
library(ggplot2) data("iris") ggplot(iris, aes(Sepal.Length, Sepal.Width)) + geom_point() + xlab(expression(overline(Sepal)~phantom(0)*textcolor("#00e000", "Length")))
内容的提问来源于stack exchange,提问作者msfrn
相关产品推荐
相关产品推荐

