箱线图显示不正确

Boxplot not displaying correctly

我遇到箱形图问题,有以下数据集

dataset

我应用的代码如下

</p>

<p>boxplot(bxplot$food1~bxplot$groupss)
    
它只显示一个变量的图,我想使用其他两个变量以及 food2 和 food3。这样我们就有了 6 个箱线图。

希望我已经正确解释了我的问题。

谢谢

@Usman - 希望这会有所帮助。如果您使用 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)

我使用最新的 tidyr 而不是 reshape2,它有 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

编辑:如果您希望在 x 轴上有 food1、food2 和 food3,并且对于这 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()