0

我想使用 ggplot2 并排制作四个箱线图,但我很难找到适合我目的的解释。

我正在使用著名的Iris数据集,我只是想制作一个图表,其中包含 sepal.length、sepal.width、petal.length 和petal.width 的值的箱线图,它们都彼此相邻。这些都是数值。

我觉得这应该非常简单,但我正在努力解决这个问题。

任何帮助,将不胜感激。

4

3 回答 3

1

尝试这个。该方法是选择数值变量并将tidyverse函数重塑为 long 以绘制所需的图。您可以使用facet_wrap()以创建矩阵样式图或避免它只有一个图。这里的代码(两个选项):

library(tidyverse)
#Data
data("iris")
#Code
iris %>% select(-Species) %>%
  pivot_longer(everything()) %>%
  ggplot(aes(x=name,y=value,fill=name))+
  geom_boxplot()+
  facet_wrap(.~name,scale='free')

输出:

在此处输入图像描述

或者,如果您想要一个图中的所有数据,您可以避免使用facet_wrap()并使用:

#Code 2
iris %>% select(-Species) %>%
  pivot_longer(everything()) %>%
  ggplot(aes(x=name,y=value,fill=name))+
  geom_boxplot()

输出:

在此处输入图像描述

于 2020-09-14T17:34:31.987 回答
0

base R中,它可以更容易地在单行中完成

boxplot(iris[-5])

在此处输入图像描述


或使用ggboxplotfromggpubr

library(ggpubr)
library(dplyr)
library(tidyr)
iris %>% 
  select(-Species) %>%
  pivot_longer(everything()) %>% 
  ggboxplot(x = 'name', fill = "name", y = 'value', 
      palette = c("#00AFBB", "#E7B800", "#FC4E07", "#00FABA"))

在此处输入图像描述

于 2020-09-14T17:37:04.340 回答
0

这是一个使用reshape2::melt

ggplot(reshape2::melt(iris), aes(variable, value, fill = variable)) + geom_boxplot()

在此处输入图像描述

于 2020-09-14T17:57:22.623 回答