生成的轴刻度标签中的斜体字母
Italic letters in generated axis tick labels
我在创建结合斜体字母和变量输入的轴刻度标签时遇到问题。
简单的说,我想调用变量,在每个标签下面插入文字比如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 = ""))
我的第一个想法是将 Unicode 用于斜体 N,就像我过去对上标数字所做的那样。但出于某种原因,这封信太小了,而且在文体上与文本的其余部分不匹配。更重要的是,在我的真实用例中,斜体 n 的所有 Unicode 字符似乎都没有对齐,在正常和下标之间的某个地方被压低。
ggplot(mpg, aes(class, hwy)) +
geom_boxplot() +
scale_x_discrete(labels = paste(levels(mpg$class), "\n\U1D45B = ", counts, sep = ""))
所以,我发现 plotmath
函数 ~italic(x)
可以用来使字母变成斜体。但是,当我将它合并到 x 轴刻度标签的 paste()
行时,出现了明显且意外的失败。请注意,该功能确实适用于 xlab()
ggplot(mpg, aes(class, hwy)) +
geom_boxplot() + xlab(~italic("n")) +
scale_x_discrete(labels = paste(levels(mpg$class), "\n", ~italic("n"), " = ", counts, sep = ""))
我在 Whosebug 上搜索过类似案例。但是,其中 none 个需要调用变量:
Add greek letters to axis tick labels in R
How to italicize part (one or two words) of an axis title
我尝试了解如何使用 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())
由 reprex package (v2.0.0)
于 2021-10-16 创建
编辑上面 teunbrand 的答案,仅将 n
斜体化而不将计数本身斜体化:通过在 "<br><i>n = "
末尾添加 </i>
成为 "<br><i>n </i>= "
标签将是:
paste0(levels(mpg$class), "<br><i>n</i> = ", counts)
而不是:
paste0(levels(mpg$class), "<br><i>n = ", counts, "</i>")
library(ggplot2)
library(ggtext)
mpg$class <- as.factor(mpg$class)
counts <- rep(1:7, 1)
# italicized count
ggplot(mpg, aes(class, hwy)) +
geom_boxplot() +
scale_x_discrete(
labels = paste0(levels(mpg$class), "<br><i>n = ", counts,"</i>")
) +
theme(axis.text.x = ggtext::element_markdown())
# not italicized count
ggplot(mpg, aes(class, hwy)) +
geom_boxplot() +
scale_x_discrete(
labels = paste0(levels(mpg$class), "<br><i>n</i> = ", counts)
) +
theme(axis.text.x = element_markdown())
斜体计数
非斜体计数
我在创建结合斜体字母和变量输入的轴刻度标签时遇到问题。 简单的说,我想调用变量,在每个标签下面插入文字比如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 = ""))
我的第一个想法是将 Unicode 用于斜体 N,就像我过去对上标数字所做的那样。但出于某种原因,这封信太小了,而且在文体上与文本的其余部分不匹配。更重要的是,在我的真实用例中,斜体 n 的所有 Unicode 字符似乎都没有对齐,在正常和下标之间的某个地方被压低。
ggplot(mpg, aes(class, hwy)) +
geom_boxplot() +
scale_x_discrete(labels = paste(levels(mpg$class), "\n\U1D45B = ", counts, sep = ""))
所以,我发现 plotmath
函数 ~italic(x)
可以用来使字母变成斜体。但是,当我将它合并到 x 轴刻度标签的 paste()
行时,出现了明显且意外的失败。请注意,该功能确实适用于 xlab()
ggplot(mpg, aes(class, hwy)) +
geom_boxplot() + xlab(~italic("n")) +
scale_x_discrete(labels = paste(levels(mpg$class), "\n", ~italic("n"), " = ", counts, sep = ""))
我在 Whosebug 上搜索过类似案例。但是,其中 none 个需要调用变量:
Add greek letters to axis tick labels in R
How to italicize part (one or two words) of an axis title
我尝试了解如何使用 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())
由 reprex package (v2.0.0)
于 2021-10-16 创建编辑上面 teunbrand 的答案,仅将 n
斜体化而不将计数本身斜体化:通过在 "<br><i>n = "
末尾添加 </i>
成为 "<br><i>n </i>= "
标签将是:
paste0(levels(mpg$class), "<br><i>n</i> = ", counts)
而不是:
paste0(levels(mpg$class), "<br><i>n = ", counts, "</i>")
library(ggplot2)
library(ggtext)
mpg$class <- as.factor(mpg$class)
counts <- rep(1:7, 1)
# italicized count
ggplot(mpg, aes(class, hwy)) +
geom_boxplot() +
scale_x_discrete(
labels = paste0(levels(mpg$class), "<br><i>n = ", counts,"</i>")
) +
theme(axis.text.x = ggtext::element_markdown())
# not italicized count
ggplot(mpg, aes(class, hwy)) +
geom_boxplot() +
scale_x_discrete(
labels = paste0(levels(mpg$class), "<br><i>n</i> = ", counts)
) +
theme(axis.text.x = element_markdown())
斜体计数
非斜体计数