ggplot несколько коробчатых графиков и позиция stat_summary - PullRequest
0 голосов
/ 06 мая 2020

У меня есть следующий код. Я хотел бы изменить цвет коробчатых диаграмм, чтобы все они имели одинаковый цвет заливки (серый). Также я хотел бы, чтобы текст stat_summary оставался в нижней части каждого графика, но vjust, кажется, только указывает относительное положение?

Спасибо

boxp <- ggplot(mtcars, aes(as.factor(cyl), wt, fill=as.factor(am)) ) +
  geom_bar(position = "dodge", stat = "summary", fun.y = "median") +
  geom_boxplot(outlier.shape = NA, width=0.2, color = "black", position = position_dodge(0.9)) +
  stat_summary(aes(label=round(..y..,2)), fun.y=median, geom="text", size=8, col = "white", vjust=8, position = position_dodge(0.9)) +
  stat_summary(fun.y=mean, geom="point", shape=18, size=4, col="white", position = position_dodge(0.9)) +
  labs(x = "Conditions", y = "Medians") +
  scale_y_continuous(limits=c(0,7),oob = rescale_none) +
  theme_bw()
boxp

enter image description here

1 Ответ

1 голос
/ 06 мая 2020

Вот возможное решение, но для функции stage() требуется ggplot v3.3.0.

Чтобы указать на основные изменения:

  • Вместо использования заливки как неявная группировка, я явно установил группировку, чтобы она не была привязана к заливке.
  • Я добавил заливку как эстетику c геометрии стержня.
  • Ящик теперь имеет неотмеченную эстетику c fill = 'gray'
  • В текстовой сводке статистики используется stage() для вычисления статистики c, но затем 0 как фактическое размещение.
library(ggplot2)
library(scales)

ggplot(mtcars, aes(as.factor(cyl), wt,
                   group = interaction(as.factor(cyl), as.factor(am)))) +
  geom_bar(aes(fill=as.factor(am)), position = "dodge", stat = "summary", fun = "median") +
  geom_boxplot(outlier.shape = NA, width=0.2, 
               color = "black", fill = 'gray',
               position = position_dodge(0.9)) +
  stat_summary(aes(label=round(after_stat(y), 2), y = stage(wt, after_stat = 0)), 
               fun=median, geom="text", size=8, col = "white", vjust=-0.5,
               position = position_dodge(0.9)) +
  stat_summary(fun=mean, geom="point", shape=18, size=4, col="white", position = position_dodge(0.9)) +
  labs(x = "Conditions", y = "Medians") +
  scale_y_continuous(limits=c(0,7),oob = rescale_none) +
  theme_bw()

Создано 06.05.2020 с помощью пакета REPEX (v0.3.0)

...