在 ggplot2 的条形图中隐藏类别?

问题描述 投票:0回答:1

我有一个使用 ggplot2 的条形图,它绘制了不同年龄类别的特定事物的百分比。如何在不更改百分比的情况下删除大量不必要的 NA 值列?我不想从数据中删除 NA 值,因为查看整个人口数据的百分比很重要。

同样的问题已经被问到here但是没有人回答。

这是我使用的代码:

df_final %>%
  ggplot() +
  geom_bar(aes(x, y = ..prop.., group = 1), stat = "count") + 
  scale_y_continuous(labels = scales::percent) + 
  xlab("age.category") + 
  ylab("Percentage") + 
  theme_classic()

代码的输出。我需要在不影响百分比的情况下删除巨大的 NA 列。

plot

尝试使用带有 gtable 的东西来删除部分情节,但无济于事。我不想要那样的解决方案,我需要一个简单优雅的解决方案。

r ggplot2 plot na
1个回答
0
投票

一个简单的解决方案是计算计数和道具,包括 ggplot() 之外的

NA
s,然后在绘图之前过滤非
NA
s。

使用一些虚假的随机示例数据:

library(ggplot2)
library(dplyr, warn = FALSE)

set.seed(123)

df_final <- data.frame(
  x = sample(c(LETTERS[1:5], NA), 100, replace = TRUE)
)

df_final |>
  count(x) |>
  mutate(prop = prop.table(n)) |>
  filter(!is.na(x)) |>
  ggplot() +
  geom_col(aes(x = x, y = prop)) +
  scale_y_continuous(labels = scales::percent) +
  xlab("age.category") +
  ylab("Percentage") +
  theme_classic()

© www.soinside.com 2019 - 2024. All rights reserved.