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
),因为它是我需要在包函数中实现的格式: