【问题标题】:只显示一些图例内容
【发布时间】:2022-01-08 20:16:39
【问题描述】:

我有兴趣在我的 ggplot2 图例中仅显示前 3 个最丰富的组。

例如,在这个表中,我有 7 个组,我只想在我的 ggplot2 图例中显示组 D、E、F

group sample size
A 2
B 3
C 1
D 25
E 23
F 20
G 3

我尝试在线搜索,但我得到的最接近的答案是重新排序图例。

提前致谢!

干杯, 梅尔

【问题讨论】:

  • 你想做什么情节?根据您提供的数据,不清楚哪里需要图例。
  • 请提供reproducible example 并显示您尝试过的代码。

标签: r ggplot2 legend


【解决方案1】:

您可以通过为填充比例设置breaks 来实现此目的:

df <- data.frame(
             group = c("A", "B", "C", "D", "E", "F", "G"),
       sample.size = c(2L, 3L, 1L, 25L, 23L, 20L, 3L)
)

library(ggplot2)
library(dplyr)

top_group <- df %>% top_n(3, sample.size) %>% pull(group)

ggplot(df, aes(group, sample.size, fill = group)) +
  geom_col() +
  scale_fill_discrete(breaks = top_group)

编辑如果是scale_fill_manual,一种选择是命名您的颜色列表。这还有一个额外的好处,您可以将颜色分配给名称或类别,而无需考虑将颜色传递给比例尺的 values 参数的顺序:

# Example color palette
colourslist <- scales::hue_pal()(length(unique(df$group)))
# Name your list of colors
names(colourslist) <- unique(df$group)

ggplot(df, aes("1", sample.size, fill = group)) +
  geom_col(width = 1, color="darkgrey") +
  scale_fill_manual(values = colourslist, breaks = top_group) +
  coord_polar("y", start = 0)

【讨论】:

  • 这可能回答了部分问题(upvote),但它手动执行“仅显示前 3 个最丰富的组”。您可能希望使用新列注释每一行以突出显示这 3 个最丰富的组,然后使用 scale_colour_manual()
  • @PaulEndymion。谢谢。固定。
  • @tjebo 感谢上帝,datapasta 为我完成了这项工作。 :D
  • 不敢相信我到现在都不知道这个:D
  • @tjebo 哈哈,是的,我不经常使用它,但是datapasta 很高兴知道您是否必须(快速)从 PDF 或 XL 或从HTML 表格。
猜你喜欢
  • 2023-01-29
  • 1970-01-01
  • 2016-11-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-10-02
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多