Boxplot не отображается правильно - PullRequest
0 голосов
/ 04 ноября 2019

У меня проблема с боксплотом, у меня следующий набор данных

набор данных

Код, который я применил, выглядит следующим образом

</p>

<p>boxplot(bxplot$food1~bxplot$groupss)
    
Он показывает график только для одной переменной иЯ хочу использовать две другие переменные, а также food2 и food3. Так что у нас будет 6 коробочных участков.

Надеюсь, я правильно объяснил свои вопросы.

Спасибо

1 Ответ

1 голос
/ 04 ноября 2019

@ Усман - надеюсь, это будет полезно. Если вы используете as.factor для своей переменной groupss, вы должны получить 6 коробок по желанию:

library(reshape2)
library(ggplot2)

dat.m <- melt(df, id.vars='groupss', measure.vars=c('food1','food2','food3'))

p <- ggplot(dat.m, aes(x=as.factor(groupss), y=value, color=variable)) +
  geom_boxplot()
p

Как указано выше, вы можете изменить свой столбец groupss на сам коэффициент следующим образом:

dat.m$groupss <- as.factor(dat.m$groupss)

Вместо reshape2 я использую последний tidyr, который имеет pivot_longer альтернативу melt. Это могло бы выполнить то же самое:

library(tidyr)

dat.m2 <- df %>%
  pivot_longer(cols = starts_with("food"), names_to = "food", values_to = "value")

p <- ggplot(dat.m2, aes(x=as.factor(groupss), y=value, color=food)) +
  geom_boxplot()
p

Редактировать : если вы хотите, чтобы на оси х были еда1, еда2 и еда3, и для каждого из этих 3, по 2Для боксов для групп 1 и 2 вы можете сделать следующее:

p <- ggplot(dat.m, aes(x=variable, y=value, color=as.factor(groupss))) +
  geom_boxplot()

или для pivot_longer версии:

p <- ggplot(dat.m2, aes(x=food, y=value, color=as.factor(groupss))) +
  geom_boxplot()
...