如何将多行表达式对齐等号?

问题描述 投票:0回答:1

我正在寻找一种在 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)

如有任何帮助,我们将不胜感激!谢谢您的支持!

r ggplot2 alignment expression
1个回答
0
投票

一种选择是将多行表达式分成几个部分。在下面的代码中,我使用长度为 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()`).

© www.soinside.com 2019 - 2024. All rights reserved.