我正在寻找一种在 R 中用多行注释 ggplot2-figure 的解决方案,这些多行在等号处对齐,就像在 LaTeX 方程中使用对齐{}-环境中的“&-符号”:
\begin{equation}
\begin{aligned}
M &= 0.00\\
SD &= 1.00
\end{aligned}
\end{equation}
我找到了一种将文本与变量值相结合的多行表达式的解决方案。 这是我的可重现示例:
example.data <- data.frame(x = rnorm(1000,0,1))
line1 = as.character(format(round(mean(example.data$x), digits = 2), nsmall = 2)) # Mean
line2 = as.character(format(round(sd(example.data$x), digits = 2), nsmall = 2)) # SD
#Plot a histogram
ggplot() +
geom_histogram(
data = example.data,
aes(x = x),
binwidth = 1)+
xlim(-3, 3) +
annotate(
geom = "text",
x=2,
y = 300,
label = paste('atop(italic(M) == "',line1,'",italic(SD) == \"',line2,'")',sep=''),
parse = TRUE)
如有任何帮助,我们将不胜感激!谢谢您的支持!
一种选择是将多行表达式分成几个部分。在下面的代码中,我使用长度为 4 的向量,并使用
vjust
分成两行,并使用 hjust
在等号处进行水平对齐:
library(ggplot2)
set.seed(1)
ggplot() +
geom_histogram(
data = example.data,
aes(x = x),
binwidth = 1
) +
xlim(-3, 3) +
annotate(
geom = "text",
x = 2,
y = 300,
vjust = c(0, 0, 1, 1) - .1 * c(1, 1, -1, -1),
hjust = c(1, 0, 1, 0),
label = c(
'italic(M) == ""', line1,
'italic(SD) == ""', line2
),
parse = TRUE
)
#> Warning: Removed 3 rows containing non-finite values (`stat_bin()`).
#> Warning: Removed 2 rows containing missing values (`geom_bar()`).