首页 > 解决方案 > 如何使用以百分比计算的数字创建堆积条形图?

问题描述

我想为类似于以下的数据创建一个堆叠的条形图。条形图应代表通过种族访问每个诊所的患者百分比,并应显示各自的数字。

在此处输入图像描述

谁能帮我解决这个问题,因为我是 R 的新手?

标签: rggplot2bar-chartstackedbarseries

解决方案


ggplot2使用和tidyverse函数尝试这种方法。正如@r2evans提到的,请下次尝试使用数据创建一个可重现的示例。这里是代码。您需要计算标签的位置,然后草绘代码:

library(ggplot2)
library(dplyr)
library(tidyr)
#Code
df %>% pivot_longer(-Race) %>%
  group_by(name) %>% mutate(Pos=value/sum(value)) %>%
  ggplot(aes(x=name,y=value,fill=Race))+
  geom_bar(stat = 'identity',position = 'fill')+
  geom_text(aes(y=Pos,label=value),position = position_stack(0.5))+
  scale_y_continuous(labels = scales::percent)

输出:

在此处输入图像描述

使用的一些数据:

#Data
df <- structure(list(Race = c("Caucasian/White", "African American", 
"Asian", "Other"), `Clinic A` = c(374, 820, 31, 108), `Clinic B` = c(291, 
311, 5, 15), `Clinic C` = c(330, 206, 6, 5), `Clinic D` = c(950, 
341, 6, 13)), class = "data.frame", row.names = c(NA, -4L))

推荐阅读