如何下标x轴刻度标签

cyr*_*jan 10 r ggplot2 axis-labels

我用下面的脚本生成了这个图. 在此输入图像描述 但我怎么能下标PM10中的"10",SO2中的"2"和NO2中的"2"?

我试过了levels(df$variable) <- c("PM[10]","SO[2]", "NO", "NO[2]"),但没办法.

有人可以帮忙吗?谢谢!

variable <- c("PM10","SO2","NO","NO2")
coef <- c(10,20,30,40)
coef_lb <- c(-5,10,23,27)
coef_ub <- c(20,39,39,50)

df <- as.data.frame(cbind(variable, as.numeric(coef),as.numeric(coef_lb),as.numeric(coef_ub)))


df$variable <- factor(df$variable,levels=c("PM10","SO2","NO","NO2"))
levels(df$variable) <- c("PM[10]","SO[2]", "NO", "NO[2]")

library(ggplot2)
#ggplot 95%CI
BWplot <- ggplot(data=df,aes(x=variable,y=coef))
BWplot <- BWplot + geom_pointrange(aes(ymin=coef_lb,ymax=coef_ub))
BWplot <- BWplot + geom_point() 
BWplot <- BWplot + scale_y_continuous(limits=c(-110, 110),breaks=seq(-100, 100, by = 20))
BWplot <- BWplot + xlab("Air pollutant") 
BWplot <- BWplot + ylab("Mean change") 
BWplot <- BWplot + geom_hline(yintercept=0,alpha=0.5)
BWplot
Run Code Online (Sandbox Code Playgroud)

Mic*_*lVE 10

您想在ggplot定义中命名轴.现在,在您为级别定义新名称(作为字符串)的位置,这是不可能的.现在发生的事情是PM [10]将被识别并读作字符串.

将其添加到您的ggplot脚本中.这将您定义的x轴刻度定义为离散比例:

+ scale_x_discrete("Air pollutant", labels = c(expression(PM[10]),expression(SO[2]), expression(NO), expression(NO[2])))
Run Code Online (Sandbox Code Playgroud)

玩得开心.

感谢Alexwhan,它也可以写成:

+ scale_x_discrete("Air pollutant", labels = parse(text = levels(df$variable)))
Run Code Online (Sandbox Code Playgroud)

哪个更容易.

  • 你可以通过`labels = parse(text = levels(df $ variable))`明确地说明每一个 (5认同)