如何在ggplot的facet_grid函数中应用下标。

7

我希望使用ggplot来绘制空气污染物与出生体重变化(95%CI)关联的结果。

我的数据格式如下:

variable    exposure period      coef    coef_lb      coef_ub
PM10        entire pregnancy    -27.6      -49.2         -3.8
SO2         entire pregnancy       40       14.2         62.8
NO          entire pregnancy      -26        -44         -6.4
NO2         entire pregnancy        0        -20           19
PM10        trimester1          -29.4      -49.4           -8
SO2         trimester1             12         -9         31.8
NO          trimester1            5.2      -15.2         28.2
NO2         trimester1           -2.2        -23         16.6
PM10        trimester2          -11.8      -35.2         11.2
SO2         trimester2           26.2          2         51.4
NO          trimester2          -10.8      -35.2         12.4
NO2         trimester2           -7.4      -27.8         14.6
PM10        trimester3            6.2      -17.6         28.2
SO2         trimester3            0.6        -19         22.4
NO          trimester3            -24        -43         -5.4
NO2         trimester3              7      -11.4         26.8

enter image description here

我得到了上面的图表。但是有一件事情我想改进,就是将PM10更改为PM +(下标为10),以及SO2和NO2等类似的更改。

g <- ggplot(data=result, aes(x=exposure.period, y=coef))
g <- g + facet_grid(.~variable)
g <- g + geom_pointrange(aes(ymin=coef_lb, ymax=coef_ub))
g <- g + geom_point() 
g <- g + scale_y_continuous(breaks = (seq(-80, 80, by = 10)))
g <- g + xlab("Exposure period") 
g <- g + ylab("Mean change in birth weight (gram)") 
g <- g + theme(axis.text.x=element_text(angle = 45, hjust = 1))
g 

我使用了上述脚本,我知道我可以将"facet_grid(.~variable)"更改为"facet_grid(.~variable, labeller="lablevalue")"; 并通过"expression("PM"[10])"实现下标。
但是我不确定如何将其放入labeller函数中。
我尝试添加

lablevalue <- c(expression("PM"[10]),expression("SO[2]), "NO","expression("NO"[2])")
g <- g + facet_grid(.~variable, labeller=lablevalue)

但是它没有起作用。

有人能帮忙吗?谢谢!


从创建有效的表达式开始,例如 expression(P*M[10]),并避免语法错误(注意代码的语法高亮)。如果您需要进一步的帮助,应该创建一个可重现的示例。 - Roland
1个回答

12

请尝试以下方法:

levels(result$variable) <- c("PM[10]","SO[2]", "NO", "NO[2]")

# After changing the values run the whole code again:
g <- ggplot(data=result, aes(x=exposure.period, y=coef))
g <- g + facet_grid(.~variable)
g <- g + geom_pointrange(aes(ymin=coef_lb, ymax=coef_ub))
g <- g + geom_point() 
g <- g + scale_y_continuous(breaks = (seq(-80, 80, by = 10)))
g <- g + xlab("Exposure period") 
g <- g + ylab("Mean change in birth weight (gram)") 
g <- g + theme(axis.text.x=element_text(angle = 45, hjust = 1))

# Use label_parsed
g + facet_grid(.~variable, labeller = label_parsed)

在此输入图片描述


谢谢!这确实有帮助。但是"label_parsed"实际上是什么意思呢?我查了一下Rhelp,发现还有另一个函数叫"label_bquote";是"label_bquote"用于上标,而"label_parsed"用于下标吗? - cyrusjan
bquotelabel_bquote使您可以选择性地引用或取消引用表达式的某些部分,而label_parsed则解析标签。请参阅?bqoute?parse - DatamineR

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接