首页 > 解决方案 > 在 ggplot 中绘制 2 个变量以显示比例/百分比,而不是总和

问题描述

我想按州绘制对调查问题的回答。我有数据框

DF <- data.frame(V1 = factor(c("Option 1", "Option 1", "Option 1", "Option 2", "Option 1", "Option 2", "Option 1", "Option 1", "Option 2", NA, "Option 2", "Option 1")),
                  Location = factor(c("California", "Georgia", "Texas", "Texas", "Georgia", "Georgia", "California", "Georgia", "Texas", "Texas", "California", "Georgia")))

由于格鲁吉亚在样本中的比例过高,因此该图可能难以解释:

library(tidyr)
library(dplyr)
DF %>%
  filter(!is.na(V1)) %>% 
  ggplot(aes(V1, ..count..)) + 
  geom_bar(aes(fill = Location), position = "dodge") +
  theme(axis.text.x = element_text(angle = 45, hjust = 1))

有没有办法显示响应的比例/百分比,每个州的响应标准化为 1 或 100?

标签: rggplot2

解决方案


我不是 100% 确定我在关注,但这里有一个选项显示不同选项的相对比例而不是计数:

DF <- data.frame(
  V1 = factor(c("Option 1", "Option 1", "Option 1", "Option 2", "Option 1", "Option 2", "Option 1", "Option 1", "Option 2", NA, "Option 2", "Option 1")),
  Location = factor(c("California", "Georgia", "Texas", "Texas", "Georgia", "Georgia", "California", "Georgia", "Texas", "Texas", "California", "Georgia"))
)

library("tidyverse")
DF <- filter(DF, !is.na(V1))
ggplot(DF, aes(Location, fill = V1)) +
  geom_bar(position = "fill")

(然后您可能希望将 y 轴重命名为“比例”或类似名称)


推荐阅读