使用 ggplot2 boxplot 中的表达式和 R 中的 facet_grid 分别更改 x 标签
Individually change x labels using expressions in ggplot2 boxplot with facet_grid in R
我想在使用 facet_grid 时单独更改 ggplot2 箱线图的 x 标签。我做了以下简单的例子:
library(ggplot2)
data1 <- InsectSprays
data1$group <- "group 1"
data2 <- InsectSprays
data2$group <- "group 2"
plotData <- rbind(data1, data2)
ggplot(plotData, aes(x=spray, y=count, fill=spray))+
guides(fill=FALSE) +
facet_grid(. ~ group) +
geom_boxplot()
我想更改 x 轴上的标签(A、B、C、...),但要针对两个组单独更改。更改标签的一种方法是使用:
scale_x_discrete(labels=c("label 1", "label 2", ...))
但这会将两组中的标签更改为相同的值。最后,我还需要能够对标签使用表达式。有什么办法可以实现我想要的吗?
编辑:
有一个非常简单的方法可以解决我的问题(感谢@Axeman)。通过使用:
scale_x_discrete(labels=c('A' = expression(beta)))
我可以更改标签。在我的例子中,这会改变两个组,但对我来说,可以预先将标签重命名为单独的标签,而不是使用这个技巧为标签使用表达式。
plotData$x <- interaction(plotData$spray, plotData$group)
plotData$x <- factor(plotData$x, labels = paste('labels', 1:12))
ggplot(plotData, aes(x=x, y=count, fill=spray))+
geom_boxplot(show.legend = FALSE) +
facet_grid(. ~ group, scales = 'free')
我原以为下面的方法会起作用,但它不起作用!
ggplot(plotData, aes(x=interaction(spray, group), y=count, fill=spray))+
geom_boxplot(show.legend = FALSE) +
facet_grid(. ~ group, scales = 'free') +
scale_x_discrete(labels = paste('labels', 1:12))
我想在使用 facet_grid 时单独更改 ggplot2 箱线图的 x 标签。我做了以下简单的例子:
library(ggplot2)
data1 <- InsectSprays
data1$group <- "group 1"
data2 <- InsectSprays
data2$group <- "group 2"
plotData <- rbind(data1, data2)
ggplot(plotData, aes(x=spray, y=count, fill=spray))+
guides(fill=FALSE) +
facet_grid(. ~ group) +
geom_boxplot()
我想更改 x 轴上的标签(A、B、C、...),但要针对两个组单独更改。更改标签的一种方法是使用:
scale_x_discrete(labels=c("label 1", "label 2", ...))
但这会将两组中的标签更改为相同的值。最后,我还需要能够对标签使用表达式。有什么办法可以实现我想要的吗?
编辑:
有一个非常简单的方法可以解决我的问题(感谢@Axeman)。通过使用:
scale_x_discrete(labels=c('A' = expression(beta)))
我可以更改标签。在我的例子中,这会改变两个组,但对我来说,可以预先将标签重命名为单独的标签,而不是使用这个技巧为标签使用表达式。
plotData$x <- interaction(plotData$spray, plotData$group)
plotData$x <- factor(plotData$x, labels = paste('labels', 1:12))
ggplot(plotData, aes(x=x, y=count, fill=spray))+
geom_boxplot(show.legend = FALSE) +
facet_grid(. ~ group, scales = 'free')
我原以为下面的方法会起作用,但它不起作用!
ggplot(plotData, aes(x=interaction(spray, group), y=count, fill=spray))+
geom_boxplot(show.legend = FALSE) +
facet_grid(. ~ group, scales = 'free') +
scale_x_discrete(labels = paste('labels', 1:12))