簡體   English   中英

多組直方圖和密度圖

[英]Histogram and density plots with multiple groups

我有一個包含 4 個變量的數據集:CR、EN、LC 和 VU:

查看我的日期集的前幾個值

CR = c(2,   9,  10, 14, 24, 27, 29, 30, 34, 43, 50, 74, 86, 105,    140,    155,    200, …)

EN = c(24,  52, 86, 110,    144,    154,    206,    242,    300,    302,    366,    403,    422,    427,    427,    434,    448, …)

LC = c(447, 476,    543,    580,    647,    685,    745,    763,    819,    821,    863,    904,    908,    926,    934,    951,    968, …)

VU = c(75,  96, 97, 217,    297,    498,    511,    551,    560,    564,    570,    575,    609,    673,    681,    700,    755,...)

我想在 plot 到 R 中創建一組這些變量的直方圖,顯示正態分布和密度,plot 類似於下面的...

我想要的圖形示例 請你幫助我好嗎?

這是分布,明確使用geom_density

但首先,要解決“分組”問題,我們需要對數據進行透視/重塑,以便 ggplot2 可以自動處理分組。 這將產生一個包含每個“CR”、“EN”、“LC”或“VU”的字符(或factor )的列,以及另一個具有特定值的列。 旋轉時,通常會保留一個或多個列(一個 id、一個 x 值、一個時間/日期或類似的東西),但我們沒有任何數據可以建議保留一些東西。

longdat <- tidyr::pivot_longer(dat, everything())
longdat
# # A tibble: 68 × 2
#    name  value
#    <chr> <dbl>
#  1 CR        2
#  2 EN       24
#  3 LC      447
#  4 VU       75
#  5 CR        9
#  6 EN       52
#  7 LC      476
#  8 VU       96
#  9 CR       10
# 10 EN       86
# # … with 58 more rows
# # ℹ Use `print(n = ...)` to see more rows

ggplot(longdat, aes(x = value, group = name, fill = name)) +
  geom_density(alpha = 0.2)

ggplot密度圖

tidyr::pivot_longer有效,也可以使用reshape2data.table中的melt

longdat <- reshape2::melt(dat, c())
## names are 'variable' and 'value' instead of 'name' and 'value'

數據

dat <- structure(list(CR = c(2, 9, 10, 14, 24, 27, 29, 30, 34, 43, 50, 74, 86, 105, 140, 155, 200), EN = c(24, 52, 86, 110, 144, 154, 206, 242, 300, 302, 366, 403, 422, 427, 427, 434, 448), LC = c(447, 476, 543, 580, 647, 685, 745, 763, 819, 821, 863, 904, 908, 926, 934, 951, 968), VU = c(75, 96, 97, 217, 297, 498, 511, 551, 560, 564, 570, 575, 609, 673, 681, 700, 755)), class = "data.frame", row.names = c(NA, -17L))

暫無
暫無

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

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