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

R 使用“plotmath”显示下标和“[]的组合`,r,parsing,ggplot2,expression,plotmath,R,Parsing,Ggplot2,Expression,Plotmath,我想创建一个绘图,在这里我想显示一个平均值和这个平均值的置信区间。为此,我使用了plotmath。这是我做的一些有效的事情- 库(ggplot2) ggplot(mtcars、aes(as.factor(cyl)、wt))+geom_箱线图()+ 实验室( title=“平均重量:”, 字幕=解析(文本=粘贴( “列表(~italic(mu)==”,3.22,”,“CI[95%,”,“(”,2.87,“,”,3.57,)”, sep=“” )) ) 由(v0.3.0)于2019-08-25创

我想创建一个绘图,在这里我想显示一个平均值和这个平均值的置信区间。为此,我使用了
plotmath
。这是我做的一些有效的事情-

库(ggplot2)
ggplot(mtcars、aes(as.factor(cyl)、wt))+geom_箱线图()+
实验室(
title=“平均重量:”,
字幕=解析(文本=粘贴(
“列表(~italic(mu)==”,3.22,”,“CI[95%,”,“(”,2.87,“,”,3.57,)”,
sep=“”
))
)

由(v0.3.0)于2019-08-25创建

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

因此,有两件事我似乎不知道如何使用
plotmath

  • 95%
    应改为
    95%

  • 使用
    [
    代替

  • 我该怎么做


    p.S.出于此处解释复杂的原因,在
    粘贴
    函数中设置
    列表
    是很重要的,因为我想将这些表达式保存为数据帧中的
    字符
    类型列。这就是为什么我没有接受下面提供的两种解决方案的原因。

    一个选项是
     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中使用简单的标记/HTML。我通常发现,通过这种方式创建基本数学表达式比使用plot更容易你根本不需要使用R表达式,输入总是一个简单的字符串

    #这需要ggplot2和ggtext的当前开发版本
    #remotes::安装_github(“tidyverse/ggplot2”)
    #remotes::install_github(“clauswilke/ggtext”)
    图书馆(GG2)
    图书馆(ggtext)
    ggplot(mtcars、aes(总系数(cyl)、重量))+
    geom_箱线图()+
    实验室(
    title=“平均重量:”,
    subtitle=“*μ*=3.22,CI95%[2.87,3.57]”
    ) +
    主题(plot.subtitle=element\u markdown())
    


    由(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 = ""
        ))
      )
    
    

    谢谢;问题有两个部分。您的回答只解决了第一个问题。@indrajeetpail谢谢,我更新了
    bquote
    ,因为它看起来更直接。您是否介意提供一个不使用
    bquote
    的解决方案版本,并且更符合问题中的现有代码?@indrajeetpail我本来会这样做的,但还有另一个答案是这样做的。它既不使用
    列表
    也不使用
    粘贴
    ,这对我来说很重要,因为我想将这些表达式保存为数据框中的列。谢谢。我更喜欢不更改问题中指定的代码的解决方案。我想使用
    列表
    +
    粘贴
    ,因为我正在将这些表达式保存为
    字符类型的列
    。只需将同一表达式定义为字符串,在这种情况下,您可以按任何方式将其从元素粘贴到一起。
    谢谢,克劳斯!我很高兴看到在
    ggplot
    中显示表达式将来使用
    ggtext
    会变得更容易。但是,目前,这个解决方案对我不起作用。我希望解决方案坚持我所展示的格式(如
    character
    type列中可以解析的
    list
    ),因为它是我需要在包函数中实现的格式: