使用 ggplot 为两个不同的数据框列创建箱线图

creating a boxplot for two different column of data frame using ggplot

我正在尝试绘制两列数据的箱线图。我以前看到的是我们有一个数据和每个数据的标签,所以我们可以将标签作为 class 传递给 ggplot 箱线图,它会被绘制出来。在这种情况下;但是,我没有标签,我只想为列 pay1pay2:

绘制箱线图
level <-c(1,2,3,5,2,4,3,1,3)
pay1 <- c(10,21,32,12,41,21,36,14,17)
pay2 <- c(26,36,5,6,52,12,18,17,19)
data <- data.frame(level, pay1, pay2)


  level pay1 pay2
1     1   10   26
2     2   21   36
3     3   32    5
4     5   12    6
5     2   41   52
6     4   21   12
7     3   36   18
8     1   14   17
9     3   17   19

如果你能告诉我我该怎么做,我将不胜感激

boxplot(data[,2:3])能解决吗?

要使用 ggplot,最好将数据框转换为您称为“每个数据的数据和标签”的模板。这可以通过 new.data = tidyr::pivot_longer(data, cols=c(pay1,pay2)) 轻松完成,其中标签将存储在名为“name”的列中,您可以将其作为一个组传递给 ggplot。

也许您正在寻找这个。关键是使用 pivot_longer() 将数据重塑为 long ,然后您可以绘制绘图。这里的代码:

library(tidyverse)
#Data
level <-c(1,2,3,5,2,4,3,1,3)
pay1 <- c(10,21,32,12,41,21,36,14,17)
pay2 <- c(26,36,5,6,52,12,18,17,19)
data <- data.frame(level, pay1, pay2)
#Plot
data %>% pivot_longer(-level) %>%
  ggplot(aes(x=name,y=value,fill=name))+
  geom_boxplot()

输出:

或者如果级别相关:

#Plot 2
data %>% pivot_longer(-level) %>%
  ggplot(aes(x=name,y=value,fill=factor(level)))+
  geom_boxplot()

输出: