ggplot 中的换行符用 LateX 表达式注释
Line break in ggplot annotate with LateX expression
情况:
我有一个 ggplot 图,我想在其中添加一些文本注释。文本注释应该出现在两行中(为了可读性和 space),每行包含一些 TeX 公式:
library(tidyverse)
library(latex2exp)
ggplot(NULL, aes(c(-5,5))) +
geom_area(stat = "function", fun = dnorm, fill = "grey40", xlim = c(-2, 2)) +
annotate(geom = "text", label = TeX(paste("Distribution of $\bar{x}$","\n","under $H_0$")),
x = -1, y = 0.3,
color = "red")
问题:
换行符没有出现。该行未拆分为两行。
什么不起作用:
我已经尝试 paste(TeX(...))
和 parse = T
,但都没有成功。
我也试过这个 label = expression(paste("distribution of ", bar(x), "\n", "under H0"))
查了一下 here,没有成功。
问题:
如何将注释(红色文本)分成两行?
您可以改用 atop
和 plotmath
表达式(有关其他信息,请参阅 ?plotmath
):
ggplot(NULL, aes(c(-5,5))) +
geom_area(stat = "function", fun = dnorm, fill = "grey70", xlim = c(-2, 2)) +
annotate(geom = "text", label = expression(atop("Distribution of"~bar(x), "under"~H[0])),
x = -1, y = 0.3,
color = "red") +
theme_classic()
我已经更改了此示例的主题和颜色,以便突出文本。
更新: 关于评论,这是一个选项,但您需要调整垂直间距。我们首先构造 exp
,一个 plotmath
表达式的列表。然后,在 annotate
中,我们需要 y 是一个向量,其值的长度等于 exp
中元素的数量。 parse=TRUE
告诉 ggplot 将 exp
的元素视为 plotmath
表达式并解析它们:
exp = list("Distribution of"~bar(x),
"under"~H[0],
hat(mu)~"is the mean")
ggplot(NULL, aes(c(-5,5))) +
geom_area(stat = "function", fun = dnorm, fill = "grey70", xlim = c(-2, 2)) +
annotate(geom = "text", label = exp,
x = -1, y = seq(0.32,0.28,length=3),
size=3, color = "red", parse=TRUE) +
theme_classic()
情况:
我有一个 ggplot 图,我想在其中添加一些文本注释。文本注释应该出现在两行中(为了可读性和 space),每行包含一些 TeX 公式:
library(tidyverse)
library(latex2exp)
ggplot(NULL, aes(c(-5,5))) +
geom_area(stat = "function", fun = dnorm, fill = "grey40", xlim = c(-2, 2)) +
annotate(geom = "text", label = TeX(paste("Distribution of $\bar{x}$","\n","under $H_0$")),
x = -1, y = 0.3,
color = "red")
问题:
换行符没有出现。该行未拆分为两行。
什么不起作用:
我已经尝试 paste(TeX(...))
和 parse = T
,但都没有成功。
我也试过这个 label = expression(paste("distribution of ", bar(x), "\n", "under H0"))
查了一下 here,没有成功。
问题:
如何将注释(红色文本)分成两行?
您可以改用 atop
和 plotmath
表达式(有关其他信息,请参阅 ?plotmath
):
ggplot(NULL, aes(c(-5,5))) +
geom_area(stat = "function", fun = dnorm, fill = "grey70", xlim = c(-2, 2)) +
annotate(geom = "text", label = expression(atop("Distribution of"~bar(x), "under"~H[0])),
x = -1, y = 0.3,
color = "red") +
theme_classic()
我已经更改了此示例的主题和颜色,以便突出文本。
更新: 关于评论,这是一个选项,但您需要调整垂直间距。我们首先构造 exp
,一个 plotmath
表达式的列表。然后,在 annotate
中,我们需要 y 是一个向量,其值的长度等于 exp
中元素的数量。 parse=TRUE
告诉 ggplot 将 exp
的元素视为 plotmath
表达式并解析它们:
exp = list("Distribution of"~bar(x),
"under"~H[0],
hat(mu)~"is the mean")
ggplot(NULL, aes(c(-5,5))) +
geom_area(stat = "function", fun = dnorm, fill = "grey70", xlim = c(-2, 2)) +
annotate(geom = "text", label = exp,
x = -1, y = seq(0.32,0.28,length=3),
size=3, color = "red", parse=TRUE) +
theme_classic()