您可以通过为填充比例设置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)