簡體   English   中英

兩個類別變量的R條形圖

[英]R barplot of two categorical variables

我有一個數據框,我對兩個類別變量Type和Location之間的關系感興趣,Type具有5個級別,Location具有20個級別。

我想繪制每個位置的類型百分比。 我想知道是否有使用ggplot2的簡潔方法?

就我而言,x軸上的變量有20個級別,因此我也遇到間距問題,我們將不勝感激

編輯:一個更具體的例子:

df
   gender beverage
1  Female     coke
2    Male     bear
3    Male     coke
4  Female     bear
5    Male      tea
6    Male     bear
7  Female    water
8  Female      tea
9  Female     bear
10   Male      tea

我想繪制每種飲料的性別比例,例如:有3個飲茶者,其中2個是男性,而1個是女性,因此男性百分比將是66.67,女性百分比將是33.33,所以在對應於茶的x軸上應該是y = 66.67和y = 33.33的兩個柱形。

最簡單的方法是進行預處理,因為我們必須按性別分別計算百分比。 我使用complete來確保在data.frame中明確擁有零百分比柱,否則ggplot將忽略該柱並擴大其他性別的柱。

library(dplyr)
library(tidyr)
df2 <- df %>% 
  group_by(gender, beverage) %>% 
  tally() %>% 
  complete(beverage, fill = list(n = 0)) %>% 
  mutate(percentage = n / sum(n) * 100)

ggplot(df2, aes(beverage, percentage, fill = gender)) + 
  geom_bar(stat = 'identity', position = 'dodge') +
  theme_bw()

在此處輸入圖片說明

或反過來:

df3 <- df %>% 
  group_by(beverage, gender) %>% 
  tally() %>% 
  complete(gender, fill = list(n = 0)) %>% 
  mutate(percentage = n / sum(n) * 100)

ggplot(df3, aes(beverage, percentage, fill = gender)) + 
  geom_bar(stat = 'identity', position = 'dodge') +
  theme_bw()

在此處輸入圖片說明

暫無
暫無

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

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