我有一個包含 n 列的資料框。我想使用每個元素(X1、X2、X3、...X14)的箱線圖來繪制我的資料。我無法弄清楚如何將我的資料框用于多個類別。
| X1 | X2 | X3 | X4 | X4 |
|---|---|---|---|---|
| 0.867 | 0.568 | 0.674 | 0.976 | 0.332 |
| 0.546 | 0.532 | 0.653 | 0.994 | 0.848 |
| 0.546 | 0.532 | 0.653 | 0.994 | 0.848 |
| 0.546 | 0.532 | 0.653 | 0.994 | 0.848 |
| 0.546 | 0.532 | 0.653 | 0.994 | 0.848 |
我找到了一個示例,我嘗試了以下操作,但它不起作用。
df <- data.frame(Xs = 1:14)
df <- melt(df , id.vars = 'Xs', variable_name = 'elements')
Test <- ggplot(df, aes(Xs, value)) geom_boxplot()
任何幫助,將不勝感激!謝謝。
uj5u.com熱心網友回復:
您可以使用以下代碼:
library(tidyverse)
library(reshape)
df %>%
melt() %>%
ggplot(aes(x = variable, y = value))
geom_boxplot()
theme_bw()
輸出:

生成的隨機資料:
df <- data.frame(X1 = runif(14, 0, 1),
X2 = runif(14, 0, 1),
X3 = runif(14, 0, 1),
X4 = runif(14, 0, 1),
X5 = runif(14, 0, 1),
X6 = runif(14, 0, 1),
X7 = runif(14, 0, 1),
X8 = runif(14, 0, 1),
X9 = runif(14, 0, 1),
X10 = runif(14, 0, 1),
X11 = runif(14, 0, 1),
X12 = runif(14, 0, 1),
X13 = runif(14, 0, 1),
X14 = runif(14, 0, 1))
uj5u.com熱心網友回復:
使用facet_wrap. 此外,用于mutate將變數添加Xs到資料框中。
df <- tibble::tribble(
~X1, ~X2, ~X3, ~X4, ~X5,
0.867, 0.568, 0.674, 0.976, 0.332,
0.546, 0.532, 0.653, 0.994, 0.848,
0.546, 0.532, 0.653, 0.994, 0.848,
0.546, 0.532, 0.653, 0.994, 0.848,
0.546, 0.532, 0.653, 0.994, 0.848
)
df <- df %>%
mutate(Xs = 1:5) %>%
melt(id.vars = 'Xs')
ggplot(df, aes(Xs, value))
geom_boxplot()
facet_wrap(~ variable)

uj5u.com熱心網友回復:
雖然@Quinten 提供的解決方案適用于我的資料集(視覺上),但不知何故,箱線圖的摘要(中位數、平均值等)不正確。因此,我進行了更多搜索,最終對我的資料集使用了 pivot_longer 函式。
df %>% select(X1, X2, X3, X4, X5) %>%
pivot_longer(., cols = c(X1, X2, X3, X4, X5),
names_to = "Var", values_to = "Val") %>%
ggplot(aes(x = Var, y = Val))
geom_boxplot()
這給出了我的資料集的正確分布(平均值、中位數等)。
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/471618.html
