只显示部分图例内容

Mel*_*Soh 2 r legend ggplot2

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

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

团体 样本量
A 2
3
C 1
D 25
23
F 20
G 3

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

提前致谢!

干杯,梅尔

ste*_*fan 5

您可以通过以下参数将类别设置为显示在图例中来实现此breaks目的scale_fill_discrete

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)
Run Code Online (Sandbox Code Playgroud)

编辑如果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)
Run Code Online (Sandbox Code Playgroud)