如何使用以百分比计算的数字创建堆叠条形图?
How to create a stacked barplot with numbers calculated in percentages?
我想为类似于以下的数据创建堆叠条形图。条形图应代表就诊于每个诊所的种族患者的百分比,并应显示相应的数字。
谁能帮我解决这个问题,因为我是 R 的新手?
Here is a link from a place I like.尽情享受吧。
底线是:在您的 geom_bar()
中,执行此操作:geom_bar(position="fill", stat="identity")
。
使用 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))
我想为类似于以下的数据创建堆叠条形图。条形图应代表就诊于每个诊所的种族患者的百分比,并应显示相应的数字。
谁能帮我解决这个问题,因为我是 R 的新手?
Here is a link from a place I like.尽情享受吧。
底线是:在您的 geom_bar()
中,执行此操作:geom_bar(position="fill", stat="identity")
。
使用 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))