我试图绘制两个因素变量,并在绘图中标记结果%。我已经在之前的主题/问题中尝试了一些推荐的代码,但我无法解决标签中%的问题。
这是我的代码:
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的情况下,标记出图中的% ?
我已经从图中提交了它们,图中条形图的百分比与我在标签中得到的百分比不同…
谢谢!
您可以尝试预先过滤NAs,例如:
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)