簡體   English   中英

如何使用箱線圖在 R 中繪制 csv 數據列

[英]How to plot columns of csv data in R using boxplots

我有一個 3600 行長 x 6 列寬的示例數據框。 我想在 R 中創建圖,該圖將顯示六個箱線圖,6 列數據中的每一列都有一個箱線圖。 我正在使用 ggplot。 我可以很容易地在 excel 中創建它們(如下所示),但希望能夠在 R 中完成,因為我未來的數據框會更大,而且 R 似乎更容易處理大型數據集。

excel繪圖

使用下面的代碼,我可以很好地繪制第一列,但無法弄清楚如何添加其他 5 列的數據。

ggplot(data=df)+
 geom_boxplot(aes(x="Label", y=col1))

使用geom_boxplotggplot2

要使用ggplot2為 6 列中的每一列獲取箱線圖,您需要首先將數據幀重塑為更長的格式以匹配ggplot2的語法(一列用於 x 值,一列用於 y 值,一列或多列作為分類值)。 然后,您可以使用ggplot2geom_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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM