R:ggplot2:facet_grid:如何在少数(不是全部)标签中包含数学表达式?

Sky*_*kyR 10 r ggplot2 facet-grid

我遇到了困难ggplot2.我阅读了大部分相关帖子,尝试了一些但没有找到任何真正的解决方案.

我想在我的标签数学表达式facet_gridsggplot2.

  • 在原始文件中,我不能写名称μg.L-1
  • 在标题和轴中我可以做到,例如 qplot(day, activity, data=a) +xlab(expression("100 µg "*.L^"-1"*""))::这很好用.
  • 我该如何处理facet_labels?我可以设置级别并重命名标签因子,但不考虑表达式,例如:

    levels(a$group) <- c("control", expression("100 µg "*.L^"-1"*""))

    qplot(…, facets=~group)

结果:

方面1的标签写在图表上:控制

方面2的标签写在图表上:"100μg" .L ^" - 1" ""......

我不希望这样.

我不想使用,facet_grid(.~group, labeller=label_bquote(…))因为我不希望我的所有标签都遵循相同的表达方式.我想手动逐个编辑标签...我尝试用bquote(…)而不是expression(…)但同样的坏结果发生了

有人对此有任何线索吗?


一个例子:我定义了一个数据帧:

activity<- as.numeric(c("44","41","48","43","42","45","44","39", "47", "68", "88", "57"))
group<-c("first","first","first","first","first","first",
         "second","second","second","second","second","second")
day<- c("0", "0", "0", "20","20", "20","0", "0", "0", "20","20", "20" )
a<-data.frame(activity, group, day)
Run Code Online (Sandbox Code Playgroud)

我的情节:

require (ggplot2) 
Run Code Online (Sandbox Code Playgroud)

qplot(day, activity, facets=.~group, data=a, ylim=c(25,90))

在此输入图像描述

我想更改构面标签和y轴的名称:

levels(a$group)<- c("control", expression("100 µg "*.L^"-1"*""))
qplot(day, activity, facets=.~group, data=a, ylim=c(25,90),
  ylab=expression("fmol "*.µl^"-1"*""))
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

它适用于y轴,但对于facet标签,它不起作用......任何线索?

Tec*_*e01 14

建议的解决方案:

先决条件:

activity <- as.numeric(c("44", "41", "48", "43", "42", "45", 
  "44", "39", "47", "68", "88", "57"))
group <- c("first", "first", "first", "first", "first", "first", 
  "second", "second", "second", "second", "second", "second")
day <- c("0", "0", "0", "20", "20", "20", "0", "0", "0", "20", 
  "20", "20")
a <- data.frame(activity, group, day)
require(ggplot2)
levels(a$group) <- c("control", expression("100 µg " * .L^"-1" * ""))
Run Code Online (Sandbox Code Playgroud)

建议的解决方案:

p1 <- qplot(day, activity, data = a)
p1 + facet_grid(. ~ group, labeller = label_parsed)
Run Code Online (Sandbox Code Playgroud)

结果:

在此处输入图片说明

解释

我们将标签结构创建为字符串,在其中创建一个公式,注意用于~替换空格...然后我们告诉facet_grid()通过设置labeller = label_parsed...解析传递给它的标签字符串作为公式

注意:显示的详细信息在 中描述?plotmath,但请注意geom_text()facet_grid()使用字符串,而不是表达式。

我希望以上有所帮助。

参考:

参见 Hagley Wickham 的标签页页面...:https : //github.com/hadley/ggplot2/wiki/labeller


bap*_*ste 6

您可以使用label_parsed,前提是您的所有标签都是有效的表达式(如果需要,您可以将文本放在引号内)

library(ggplot2) 
levels(a$group)<- c("'control test'", "100~mu*g*'.L'^-1")
ggplot(a) + facet_grid(.~group, labeller=label_parsed)
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述