在 r ggplot2 中为百分比值创建条形图
Posted
技术标签:
【中文标题】在 r ggplot2 中为百分比值创建条形图【英文标题】:Create barplots for percentage values in r ggplot2 【发布时间】:2022-01-18 12:40:29 【问题描述】:我有一个包含多个分类值的数据框,比如说来自 vcd 包的 Arthritis 数据集。
## Load vcd package
library(vcd)
## Load Arthritis dataset (data frame)
data(Arthritis)
colnames(Arthritis)
"ID" "Treatment" "Sex" "Age" "Improved"
我想为那些改善的患者创建治疗计数的条形图(x 轴,安慰剂和治疗)。 这是代码:
Arthritis1 <- Arthritis %>%
dplyr::filter(Improved == "Marked")
ggplot(data = Arthritis1, aes(x = Treatment)) +
geom_bar()
但是,现在我想绘制百分比。也就是说,对于所有服用安慰剂的患者,属于“显着”改善的患者的百分比。 对于所有“治疗”的患者,属于“显着”改善的患者的百分比。
我可以得到这样的百分比。
a = table(Arthritis1$Treatment)[1]/table(Arthritis$Treatment)[1]
b = table(Arthritis1$Treatment)[2]/table(Arthritis$Treatment)[2]
Arthritis2 <- as.data.frame(c(a, b))
colnames(Arthritis2)[1] <- "var1"
str(Arthritis2)
'data.frame': 2 obs. of 1 variable:
$ var1: num 0.163 0.512
所以我想要一个有两列的图,值 1 作为顶部,安慰剂达到 0.163,治疗达到 0.512。
但是,我还没有找到将其绘制为百分比的方法,例如 geom_bar() 绘制计数。
【问题讨论】:
这能回答你的问题吗? Show percent % instead of counts in charts of categorical variables 【参考方案1】:如果您已经计算了百分比,则需要geom_bar(stat = "identity")
:
library(tidyverse)
library(vcd)
#> Loading required package: grid
data(Arthritis)
Arthritis %>%
filter(Improved == "Marked") %>%
count(Treatment) %>%
mutate(n = n / sum(n) * 100) %>%
ggplot(aes(Treatment, n)) +
geom_bar(stat = "identity") +
labs(y = "Percentage")
由reprex package (v2.0.1) 于 2021 年 12 月 15 日创建
【讨论】:
以上是关于在 r ggplot2 中为百分比值创建条形图的主要内容,如果未能解决你的问题,请参考以下文章
R语言ggplot2可视化:使用dplyr包计算每个分组个数的比例使用ggplot2可视化条形图(bar plot)并在条形图上添加百分比标签
R语言ggplot2可视化:使用dplyr包计算每个分组个数的比例(对计算获得的百分比进行近似,值保留整数部分)使用ggplot2可视化条形图(bar plot)并在条形图上添加百分比标签
堆叠条形图将变量转换为ggplot2 R中不相关变量的基于存在缺失的百分比
R语言ggplot2可视化在分面图(facet_grid)的条形图上添加计数(count)或者百分比(percent)标签实战
R语言ggplot2可视化:将条形图(bar plot)和线图(line plot)组合在一起并使用双Y轴(double y axis)进行可视化其中一个Y轴显示为百分比