[英]How to a for loop to plot data as boxplots grid (4x3) in R?
[英]How to plot columns of csv data in R using boxplots
使用geom_boxplot
的ggplot2
要使用ggplot2
为 6 列中的每一列获取箱线图,您需要首先将数据帧重塑为更长的格式以匹配ggplot2
的语法(一列用于 x 值,一列用于 y 值,一列或多列作为分类值)。 然后,您可以使用ggplot2
和geom_boxplot
函数:
这里是使用包含的iris
数据集的示例:
> head(iris)
Sepal.Length Sepal.Width Petal.Length Petal.Width Species
1 5.1 3.5 1.4 0.2 setosa
2 4.9 3.0 1.4 0.2 setosa
3 4.7 3.2 1.3 0.2 setosa
4 4.6 3.1 1.5 0.2 setosa
5 5.0 3.6 1.4 0.2 setosa
6 5.4 3.9 1.7 0.4 setosa
使用tidyr
包中的pivot_longer
函数,您可以将此数据集的前 4 列重塑为更长的格式:
library(tidyr)
library(dplyr)
iris2 <- iris %>% pivot_longer(cols = Sepal.Length:Petal.Width, names_to =
"Var", values_to = "val")
# A tibble: 600 x 3
Species Var val
<fct> <chr> <dbl>
1 setosa Sepal.Length 5.1
2 setosa Sepal.Width 3.5
3 setosa Petal.Length 1.4
4 setosa Petal.Width 0.2
5 setosa Sepal.Length 4.9
6 setosa Sepal.Width 3
7 setosa Petal.Length 1.4
8 setosa Petal.Width 0.2
9 setosa Sepal.Length 4.7
10 setosa Sepal.Width 3.2
# … with 590 more rows
然后,您可以在ggplot2
使用这个新数据集来获取每个Var
值的箱线图:
library(ggplot2)
ggplot(iris2, aes(x = Var, y = val, fill = Var))+
geom_boxplot()
使用base r
替代方法
无需重塑数据框,您可以通过在base r
使用boxplot
函数立即获得 boxplot :
boxplot(iris[,c(1:4)], col = c("red","green","blue","orange"))
它回答你的问题吗?
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.