如何根据 ggplot2 中的某些条件删除标签?

Posted

技术标签:

【中文标题】如何根据 ggplot2 中的某些条件删除标签?【英文标题】:How do I remove labels based on certain conditions in ggplot2? 【发布时间】:2021-05-28 01:09:23 【问题描述】:

我正在参加#duboischallenge 挑战 5。

我想删除绘图上的标签“0%”。

代码(仍在学习,所以可能不是最有效的代码!):

income <- readr::read_csv('https://raw.githubusercontent.com/rfordatascience/tidytuesday/master/data/2021/2021-02-16/income.csv')


data5 <- income %>%
  gather(expenses, percentage, 3:7) %>%
  mutate(percentage = replace_na(percentage, 0))

data5$expenses <- factor(data5$expenses, levels = c("Other", "Tax", "Clothes", "Food", "Rent"))
data5$Class <-factor(data5$Class, levels = c("Over $1000", "$750-1000", "$500-750", "$400-500", "$300-400", "$200-300", "$100-200"))

plot5 <-ggplot(data5, aes(x = Class, y = percentage, fill = expenses)) +
  geom_bar(position = "fill", stat = "identity")+
  scale_fill_manual(values = c("black", "blueviolet", "darksalmon", "azure3", "cornsilk3"), breaks = c("Rent", "Food","Clothes", "Tax", "Other"))+
  geom_text(aes(x = Class, y = percentage, label = paste0(percentage, "%")), color = if_else(data5$expenses == "Rent", "white", "black"), size = 3.5, position = position_fill(vjust = 0.5)) +
  coord_flip()

如果我添加

geom_text(data = data5 %>% filter(percentage > 3),aes(x = Class, y = percentage, label = paste0(percentage, "%")), color = if_else(data5$expenses == "Rent", "white", "black"), size = 3.5, position = position_fill(vjust = 0.5))

我收到此错误: 错误:美学长度必须为 1 或与数据 (32) 相同:颜色

如何删除“0%”标签?

【问题讨论】:

【参考方案1】:

您可以简单地采用与为标签着色相同的方法:

  ggplot(data5, aes(x = Class, y = percentage, fill = expenses)) +
    geom_bar(position = "fill", stat = "identity")+
    scale_fill_manual(values = c("black", "blueviolet", "darksalmon", "azure3", "cornsilk3"), breaks = c("Rent", "Food","Clothes", "Tax", "Other"))+
    geom_text(aes(x = Class, y = percentage, 
                  label = ifelse(percentage > 0, paste0(percentage, "%"), "")),
              color = if_else(data5$expenses == "Rent", "white", "black"), size = 3.5, position = position_fill(vjust = 0.5)) +
    coord_flip()

【讨论】:

谢谢,这么简单的解决方案!

以上是关于如何根据 ggplot2 中的某些条件删除标签?的主要内容,如果未能解决你的问题,请参考以下文章

强制 R 停止绘制缩写轴标签 - 例如ggplot2 中的 1e+00

如何在android数据库中显示表创建日期以及如何根据日期的某些条件删除该表?

ggplot2中y比例标签的好K/M/G缩写

如何根据 ggplot2 绘制的图上的 y 轴值覆盖构面标签?

根据 bash 中的条件删除 YML 文件中的属性

从使用 ggplot2 创建的多面条形图中删除重复的类别标签