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

时间:2015-02-04 07:55:36

标签: r ggplot2 subscript

我想用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 

我使用了上面的脚本,我知道我可以改变&#34; facet_grid(.~ variable)&#34;进入&#34; facet_grid(.~ variable,labeller =&#34; lablevalue&#34;)&#34 ;;并用&#34;表达式实现下标(&#34; PM&#34; [10])&#34;。

但我不知道如何将它放入贴标机功能。

我尝试添加

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

但它不起作用。

有人可以帮忙吗?谢谢!

1 个答案:

答案 0 :(得分:10)

尝试以下方法:

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)

enter image description here