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

uqjltbpv  于 2023-05-20  发布在  其他
关注(0)|答案(1)|浏览(230)

我使用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列。

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

wsxa1bj1

wsxa1bj11#

一个简单的解决方案是在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()

相关问题