[英]Stacked Bar Plot ggplot2
我知道這個問題經常被問到,但是我在制作R中100%堆積的條形圖時遇到了麻煩。我知道那里有大量的頁面解釋了如何做,但是什么也沒用,我認為我導入的數據不正確配置不正確,所以基本上我想知道我在這方面做錯了什么。 我使用的數據看起來像所附圖片中的數據。 我可以在Excel中創建我想要的確切圖表(我也已附加了該圖表(右側的條形圖;我不能附加一張以上的圖片,因此它們都在同一張圖片中)),但是由於各種原因,我需要將其放在R中。用Excel編寫數據的方式是否正確?如果是,我該如何正確設置?
至少在ggplot2
中,您需要將數據從“寬”格式轉換為“長”格式。 在下面,我使用tidyr::gather
函數將兩個數據列(“運行”和“跳躍”)“收集”到單個“分數”列中,然后可以通過“活動”對其進行着色。
library(magrittr) # For pipe (%>%)
dat <- tibble::tibble(
weeks = 1:15,
running = runif(15, 0, 1),
jumping = 1 - running
)
dat
#> # A tibble: 15 x 3
#> weeks running jumping
#> <int> <dbl> <dbl>
#> 1 1 0.675 0.325
#> 2 2 0.727 0.273
#> 3 3 0.430 0.570
#> 4 4 0.324 0.676
#> 5 5 0.809 0.191
#> 6 6 0.260 0.740
#> 7 7 0.433 0.567
#> 8 8 0.872 0.128
#> 9 9 0.0288 0.971
#> 10 10 0.903 0.0970
#> 11 11 0.295 0.705
#> 12 12 0.538 0.462
#> 13 13 0.342 0.658
#> 14 14 0.291 0.709
#> 15 15 0.877 0.123
library(ggplot2)
dat_long <- dat %>%
tidyr::gather(activity, fraction, running, jumping)
dat_long
#> # A tibble: 30 x 3
#> weeks activity fraction
#> <int> <chr> <dbl>
#> 1 1 running 0.675
#> 2 2 running 0.727
#> 3 3 running 0.430
#> 4 4 running 0.324
#> 5 5 running 0.809
#> 6 6 running 0.260
#> 7 7 running 0.433
#> 8 8 running 0.872
#> 9 9 running 0.0288
#> 10 10 running 0.903
#> # ... with 20 more rows
ggplot(dat_long) +
aes(x = factor(weeks), y = fraction, fill = activity) +
geom_col()
您也可以在基數R中通過轉換為“寬”矩陣來執行此操作。 (請注意,我也使用[, -1]
刪除第一列)。
dat_tmat <- t(as.matrix(dat[, -1]))
dat_tmat
#> [,1] [,2] [,3] [,4] [,5] [,6]
#> running 0.5227949 0.5352537 0.5879579 0.2678927 0.93068128 0.2948861
#> jumping 0.4772051 0.4647463 0.4120421 0.7321073 0.06931872 0.7051139
#> [,7] [,8] [,9] [,10] [,11] [,12]
#> running 0.07729363 0.8925416 0.5503279 0.007479232 0.02991765 0.5832765
#> jumping 0.92270637 0.1074584 0.4496721 0.992520768 0.97008235 0.4167235
#> [,13] [,14] [,15]
#> running 0.8660134 0.1156794 0.3176998
#> jumping 0.1339866 0.8843206 0.6823002
barplot(dat_tmat, col = c("blue", "red"))
legend("topleft", c("running", "jumping"), col = c("blue", "red"), lwd = 5, bg = "white")
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.