使用 `plotmath` 显示下标和 `[ ]` 的组合

using `plotmath` to display combination of subscript and `[ ]`

我想创建一个图,在其中显示平均值和该平均值的置信区间。为此,我使用 plotmath。这是我所做的 works-

library(ggplot2)

ggplot(mtcars, aes(as.factor(cyl), wt)) + geom_boxplot() +
  labs(
    title = "Mean weight:",
    subtitle = parse(text = paste(
      "list(~italic(mu)==", 3.22, ",", "CI[95~'%'] ", "(", 2.87, ",", 3.57, "))",
      sep = ""
    ))
  )

reprex package (v0.3.0)

于 2019-08-25 创建

但这不是我真正想要的。我想要显示这些结果的格式如下-

所以有两件事我似乎无法弄清楚如何使用 plotmath:

  1. 95 % 应该改为 95%

  2. 使用[代替(

我该怎么做?

P.S. 重要的是,由于这里难以解释的原因,对我来说 listpaste 函数中因为我想将这些表达式保存为数据框中的 character 类型的列。这就是为什么我没有接受下面提供的两个解决方案。

一个选项是bquote

library(ggplot2)
ggplot(mtcars, aes(as.factor(cyl), wt)) + 
       geom_boxplot() +
       labs(title = "Mean weight:", 
        subtitle = bquote(italic(mu)~"= 3.22,"~CI[95*'%']~"["*"2.87, 3.57"*"]"))

使用显示的公式:

ggplot(mtcars, aes(as.factor(cyl), wt)) + geom_boxplot() +
  labs(
    title = "Mean weight:",
    subtitle = ~italic(mu) == 3.22*', '*"CI"[95*'%']*group('[',2.87*','*3.57,']')
  )

我假设您真正关心的是输出看起来正确,而不是使用 plotmath。您可以使用我目前正在开发的 ggtext 包,它使您可以在 ggplot2 中使用简单的 markdown/HTML。我通常发现以这种方式创建基本数学表达式比使用 plotmath 争论要容易得多。而且您根本不必使用 R 表达式,输入始终是一个简单的字符串。

# this requires the current development versions of ggplot2 and ggtext
# remotes::install_github("tidyverse/ggplot2")
# remotes::install_github("clauswilke/ggtext")

library(ggplot2)
library(ggtext)

ggplot(mtcars, aes(as.factor(cyl), wt)) + 
  geom_boxplot() +
  labs(
    title = "Mean weight:",
    subtitle = "*&mu;* = 3.22, CI<sub>95%</sub>[2.87, 3.57]"
  ) +
  theme(plot.subtitle = element_markdown())

reprex package (v0.3.0)

创建于 2019-12-02

此解决方案保留列表和粘贴。

library(ggplot2)

ggplot(mtcars, aes(as.factor(cyl), wt)) + geom_boxplot() +
  labs(
    title = "Mean weight:",
    subtitle = parse(text = paste(
      "list(~italic(mu)==", 3.22, ",", "CI[95*'%'] ", "*'['*", 2.87, ",", 3.57, "*']')",
      sep = ""
    ))
  )