簡體   English   中英

使用 ggplot2 繪制帶有多個箱線圖的箱線圖

[英]Draw a boxplot with several boxplots using ggplot2

我想用 dataframe 的 x 軸繪制 dataframe 的箱線圖,我將繪制具有要繪制的各種箱線圖的特定名稱的圖。 這是數據集

辦公自動化 White_British Low_Occupancy 失業者 資質
E00004120 42.3566879 6.293706294 1.893939394 73.62637363
E00004121 47.2 5.93220339 2.688172043 69.90291262
E00004122 40.6779661 2.912621359 1.212121212 67.58241758
E00004123 49.66216216 0.925925926 2.803738318 60.77586207
E00004124 51.13636364 2 3.816793893 65.98639456
E00004125 41.41791045 3.93258427 3.846153846 74.20634921
E00004126 48.54014599 5.555555556 4.545454545 62.44725738
E00004127 48.67924528 8.870967742 0.938967136 60.35242291
E00004128 45.39249147 2.48447205 2.164502165 70.07874016
E00004129 49.05660377 3.521126761 4.310344828 66.66666667
E00004130 38.80597015 6.25 0.917431193 66.66666667
E00004131 39.64285714 7.56302521 1.869158879 64.47368421
E00004132 55.88235294 4.347826087 3.797468354 73.4939759
E00004133 41.96078431 7.627118644 1.990049751 65.38461538
E00004134 53.19148936 6 2.702702703 72.89156627
E00004135 46.85314685 4.761904762 3.731343284 74.82014388
E00004136 59.64912281 0.909090909 2.732240437 73.68421053
E00004137 48.16176471 5.442176871 2.752293578 69.06779661
E00004138 42.22222222 2.816901408 4.972375691 58.16326531

這實際上只是一個很長的表的一個子集。 調用excel表到R后,使用ggplot調用表。 使用了此代碼框架: ggplot(data, aes (x)) + geom_boxplot()有時ggplot(data) + geom_boxplot(aes(x))其中 x 是 dataframe 中的向量(本例中為一列)。

所以第一次這是我使用的 R 代碼: ggplot(Census.Data, aes(x = White_British, Low_Occupancy, Unemployed, Qualification)) + geom_boxplot()

我得到的是 White_British 數據列繪制在 X 軸上,而 Low_Occupancy 的數據列繪制在 y 軸上,如下圖所示:

箱線圖,但我想要 x 軸上的兩個數據列

將 aes(x) 放入 geom_boxplot() 參數時也會發生同樣的情況,但這不是大問題。 為了有點聰明,我把我的專欄稱為 [| White_British | Low_Occupancy | 失業 | 資格 |] 到一個名為 censusgroups 的 object 中,考慮如果我將 object 名稱放在 aes(x) 中,並用x =指定對這些列的調用,以表示它們將 Z34D1F91FB2E514B8576FAB1A75A 排序到問題。 沒那么聰明。 censusgroups <- Census.Data [, 2:5]

ggplot(Census.Data) + geom_boxplot(aes(x = censusgroups)) -- 在 R 工作室的 plot 選項卡上返回一個空白頁

ggplot(Census.Data) + geom_boxplot(aes(x = Census.Data [, 2:5])) -- 仍然返回一個空白頁

長話短說,因為其他一些探索也導致了錯誤,我使用了 R Studio 的默認箱線圖 function。

gach <-boxplot(x= Census.Data[, 2:5], xlab = 'Data Groups', ylab = 'Percentages', col = topo.colors(4, 0.6, rev = F))

並得到了下面的結果。 事實上,這是我希望使用 ggplot 功能獲得的結果,因為我更喜歡ggplot而不是默認值,因為它具有出色的圖形功能。

在 x 軸上有多個箱線圖的正確箱線圖

我想知道如何使用ggplot編寫代碼來創建上面的箱線圖。

您可以嘗試使用reshape2庫來融合數據。 您可以這樣做:

library(reshape2)
ggplot(melt(df), aes(x = variable, y = value)) + 
  geom_boxplot()

output 將如下所示: 在此處輸入圖像描述

首先嘗試旋轉您的數據:

data <- 
    data %>%
    tidyr::pivot_longer(cols = White_British:Qualification, names_to = "Data Groups", values_to = "Percentages")
col = topo.colors(4, 0.6, rev = F)

ggplot(data, aes(x = `Data Groups`, y = Percentages, fill = `Data Groups`)) + 
    geom_boxplot() +
    scale_fill_manual(values = col) +
    theme(legend.position = "none")

在此處輸入圖像描述

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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