我正在尝试绘制两个因子变量,并在图中用 % 标记结果。 我已经在之前的主题/问题中尝试了一些推荐的代码,但我无法解决标签中的 % 问题。
这是我的代码:
library(dplyr)
library(ggplot2)
data2 <- data %>% group_by(anoletivo_cat) %>%
count(anoletivo_cat, qsd_distrito_nascimento_rec) %>%
mutate(pct = n / sum(n), pct_label = scales::percent(pct))
ggplot(data2[!is.na(data2$qsd_distrito_nascimento_rec),], aes(x= anoletivo_cat, fill = qsd_distrito_nascimento_rec, y = pct)) +
geom_bar(position = "fill", stat="identity") +
geom_text(aes(label = paste(pct_label), y = pct),
position = position_fill(vjust = 0.5)) +
scale_y_continuous(labels = scales::percent)
这是我得到的情节:
如您所见,我的标签正在计算 NA 数据的百分比(这就是为什么如果我们对条形的百分比求和,它不是 100%,因为它应该是)。所以,我的问题是如何在图中标记 %,而不计算 NA?
我已经从图中省略了它们,并且图中条的百分比与我在标签中得到的百分比不同......
谢谢!
答案 0 :(得分:0)
您可以尝试预先过滤掉 NA,例如:
library(dplyr)
library(ggplot2)
data2 <- data %>%
filter(!is.na(qsd_distrito_nascimento_rec)) %>%
group_by(anoletivo_cat) %>%
count(anoletivo_cat, qsd_distrito_nascimento_rec) %>%
mutate(pct = n / sum(n), pct_label = scales::percent(pct))
ggplot(data2, aes(x= anoletivo_cat, fill = qsd_distrito_nascimento_rec, y = pct)) +
geom_bar(position = "fill", stat="identity") +
geom_text(aes(label = paste(pct_label), y = pct),
position = position_fill(vjust = 0.5)) +
scale_y_continuous(labels = scales::percent)