使用 ggplot 为两个不同的数据框列创建箱线图
creating a boxplot for two different column of data frame using ggplot
我正在尝试绘制两列数据的箱线图。我以前看到的是我们有一个数据和每个数据的标签,所以我们可以将标签作为 class 传递给 ggplot 箱线图,它会被绘制出来。在这种情况下;但是,我没有标签,我只想为列 pay1 和 pay2:
绘制箱线图
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()
输出:
我正在尝试绘制两列数据的箱线图。我以前看到的是我们有一个数据和每个数据的标签,所以我们可以将标签作为 class 传递给 ggplot 箱线图,它会被绘制出来。在这种情况下;但是,我没有标签,我只想为列 pay1 和 pay2:
绘制箱线图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()
输出: