R. *_*ämö 7 r ggplot2 italic plotmath
我在创建结合斜体字母和变量输入的轴刻度标签时遇到问题。简单地说,我想调用变量并在每个标签下方插入诸如n = 1之类的文本。
这是一个除了斜体n之外的所有内容的示例:
require(ggplot2)
mpg$class <- as.factor(mpg$class)
counts <- rep(1:7, 1)
ggplot(mpg, aes(class, hwy)) +
geom_boxplot() +
scale_x_discrete(labels = paste(levels(mpg$class), "\nn = ", counts, sep = ""))
Run Code Online (Sandbox Code Playgroud)
我的第一个想法是使用 Unicode 表示斜体 N,就像我过去对上标数字所做的那样。但由于某种原因,这封信太小并且在风格上与文本的其余部分不匹配。更重要的是,在我的实际用例中,斜体 n 的所有 Unicode 字符似乎都呈现不对齐,在正常和下标之间的某个位置凹陷。
ggplot(mpg, aes(class, hwy)) +
geom_boxplot() +
scale_x_discrete(labels = paste(levels(mpg$class), "\n\U1D45B = ", counts, sep = ""))
Run Code Online (Sandbox Code Playgroud)
所以,我发现这个plotmath函数~italic(x)可以用来将字母变成斜体。paste()然而,当我将它合并到 x 轴刻度标签的行中时,出现了明显且意外的失败。请注意,该函数确实适用于xlab()
ggplot(mpg, aes(class, hwy)) +
geom_boxplot() + xlab(~italic("n")) +
scale_x_discrete(labels = paste(levels(mpg$class), "\n", ~italic("n"), " = ", counts, sep = ""))
Run Code Online (Sandbox Code Playgroud)
我在 StackOverflow 上搜索过类似的案例。然而,它们都不需要调用变量:
我尝试了解如何使用expression()和bquote()并同时能够调用变量,但我无法产生任何功能。
此时,非常感谢任何帮助!
如今,您可以使用 ggtext 包通过一些 markdown/html 装饰来设置文本样式。
library(ggplot2)
library(ggtext)
#> Warning: package 'ggtext' was built under R version 4.1.1
mpg$class <- as.factor(mpg$class)
counts <- rep(1:7, 1)
ggplot(mpg, aes(class, hwy)) +
geom_boxplot() +
scale_x_discrete(
labels = paste0(levels(mpg$class), "<br><i>n = ", counts, "</i>")
) +
theme(axis.text.x = element_markdown())
Run Code Online (Sandbox Code Playgroud)

由reprex 包于 2021 年 10 月 16 日创建(v2.0.0)