簡體   English   中英

帶有聚合數據的堆積條形圖(ggplot2)

[英]stacked barplot with aggregated data (ggplot2)

我對ggplot2有一些重大問題。 即使這對你來說可能是一個非常簡單的問題,但我還是無法管理它(我已經閱讀了ggplot2-book並且正在查看stackoverflow)。

或者,有一個由因子變量(國家)和二分變量組成的數據集。 不幸的是我自己沒有這種擴展格式的數據:我有兩個變量“var1”和“var2”。 var1給出原始數據集中某個條件為true的個案數,var2給出相同條件為false的個案數:

country | var1 | var2
----------------------
"A" | 20 | 30
"B" | 24 | 53
"C" | 21 | 24
"D" | 30 | 66

現在我想制作一個疊加的條形圖 ,其中y軸顯示每個國家/地區的百分比 (所有條形應具有相同的高度)加上條形圖中顯示絕對數字

應該怎么樣

我發現如果數據是擴展格式,我可以使用

ggplot(data=dataset)+geom_bar(aes(x=country, fill=variable), position='fill')

但是,我只有匯總的數據。

有人可以幫幫我嗎?

謝謝!

通過首先重塑然后繪制的快速解決方案:

library(ggplot2)
library(tidyr)

temp2 <- gather(temp, var, val, -country)
ggplot(temp2, aes(country, val, fill = var)) + 
  geom_col(position = 'fill') +
  geom_text(aes(label = val), position = position_fill(vjust = 0.5)) +
  scale_y_continuous(labels = scales::percent_format())

在此輸入圖像描述

library('ggplot2')
library('data.table')

df1 <- fread('country var1 var2
             "A" 20 30
             "B" 24 53
             "C" 21 24
             "D" 30 66')

df1 <- melt(df1, id.vars = 'country', )
df1[, percent := prop.table(value)*100, by = 'country']

ggplot(data = df1, aes( x = country, y = percent, fill = variable, label = value )) + 
  geom_bar(stat = 'identity') + 
  geom_text(size = 5, position = position_stack(vjust = 0.5))

在此輸入圖像描述

暫無
暫無

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

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