首页 > 解决方案 > 在分组小提琴/箱线图中居中 x 轴标签

问题描述

我正在按组创建小提琴图。我想使用以每组小提琴图的中点为中心的希腊字母来标记每组。我怎样才能做到这一点?

到目前为止,我正在使用scale_x_discrete,但我无法指示任何类型的居中。

library(ggplot2)
dat <- matrix(rnorm(100*12),ncol=12)

# Violin plots for columns
mat <- reshape2::melt(data.frame(dat), id.vars = NULL)

mat$variable_grouping <- ifelse(mat$variable %in% c('X1', 'X2', 'X3','X4'), 'g1',
                                ifelse(mat$variable %in% c('X5','X6','X7','X8'), 
                                       'g2', 'g3'))

pp <- ggplot(mat, aes(x = variable, y = value, fill = variable_grouping)) + 
  geom_violin(scale="width",adjust = 1,width = 0.5) + 
  scale_x_discrete(labels = c(expression(theta[1]),"","","",expression(theta[2]),"","","",expression(theta[3])))
pp

在此处输入图像描述

在此示例中,标签应位于 2.5、6.5 和 8.5。

标签: rggplot2axis-labels

解决方案


一个不同的解决方案:

library(ggplot2)

pp <- ggplot(mat, aes(x = as.numeric(variable), y = value, 
                      group = variable, fill = variable_grouping)) + 
  geom_violin(scale="width", adjust = 1, width = 0.5) + xlab("variable") +
  scale_x_continuous(breaks = c(2.5, 6.5, 10.5), 
              labels = c(expression(theta[1]),expression(theta[2]),expression(theta[3])))
pp

在此处输入图像描述


推荐阅读