R创建显示每个地区答案的图[重复]

izkcnapc  于 2023-06-19  发布在  其他
关注(0)|答案(1)|浏览(119)

此问题已在此处有答案

How to draw stacked bars in ggplot2 that show percentages based on group?(2个答案)
12天前关闭
我目前正在分析一个数据集,我需要帮助基本的数据准备和在相当复杂的条形图中显示数据。图应该看起来与所附的图像相似,但当然有不同的变量。
让我们使用一个模拟数据集来进行说明:

df <- data.frame(id=c(1,2,3,4,5,6,7,8,9,10),
                         district=c("1","1","2","3","2","1","1","2","3","2"),
                         f1=c("1","2","3","1","2","3","1","2","2","3")
)

district =城市有3个不同的区f1 =调查的第一个问题,有3个不同的类别
我想显示每个地区的每个类别的概率,并将其与图像中的情节相似。首先,我想做显示整体percantage(为城市),然后每个区。同一个情节!
我很感激每一个帮助。多谢了
I want a plot similar to this one

nimxete2

nimxete21#

作为第一步,这需要或至少我会建议计算计数和百分比。之后,使用ggplot2创建堆叠条形图非常简单:

library(dplyr)
library(ggplot2)

df |> 
  count(district, f1) |> 
  mutate(pct = prop.table(n), .by = district) |> 
  ggplot(aes(pct, district, fill = f1)) +
  geom_col()

编辑添加总体结果的一个选项是首先“克隆”数据,并将district设置为"city"或...然后将其绑定到原始数据集,例如dplyr::bind_rows

df <- df |> 
  mutate(district = "city") |> 
  bind_rows(df)

df |> 
  count(district, f1) |> 
  mutate(pct = prop.table(n), .by = district) |> 
  ggplot(aes(pct, district, fill = f1)) +
  geom_col()

相关问题