如何在ggplot2中使用facet网格标题中的下标

时间:2015-11-06 22:39:49

标签: r ggplot2

我无法为最后一个字幕(pm10)创建下标。如何将pm大写并创建下标“10”。目前标题是pm10。

library(dlnm)
library(ggplot2)
library(reshape2)
library(plyr)
data <- chicagoNMMAPS
data1<-data[c(1,7:9,13)]
dmelt = melt(data1, id.vars = 'date')


ggplot(dmelt, aes(x = date, y = value)) + 
geom_line() + 
theme_bw() +
facet_wrap(~ variable, scales = 'free_y', ncol = 1)+ 
theme(strip.text.x = element_text(size=14,face="bold"),
strip.background = element_rect(colour="")) + 
labs(x = "Date") +
theme(axis.title=element_text(face="bold",size="14"),axis.text=element_text(size=14,face="bold")) +
theme(#panel.grid.major = element_blank(),
panel.grid.minor = element_blank(),
strip.background = element_blank(),
panel.border = element_rect(colour = "black"))

1 个答案:

答案 0 :(得分:3)

因此,您可以使用贴标机功能执行此操作。不幸的是,facet_wrap目前没有此功能,但facet_grid确实如此。

vnames <-list(
'death' = 'death',
'cvd' = 'cvd',
'resp' = 'resp',
'pm10' = bquote(pm[10]))

vlabeller <- function(variable,value){
  return(vnames[value])
}

bquote是一种使用表达式的灵活方式。可以找到更多here。您可以看到更多然后,只需将原始facet_wrap功能更改为以下内容:

facet_grid(variable~., scales = 'free_y', labeller = vlabeller)

然而,它的外观与你想要的有点不同。在这种情况下,你可以直接处理情节本身的元素,但它更麻烦。此处描述了该方法:https://stackoverflow.com/a/19298442/1362215