我只想在ggplot2图例中显示前3个最丰富的组。例如,在此表中,我有7个组,我只想在ggplot2图例中显示组D、E、F| 群|样本量|| - ------|- ------|| A类|第二章|| 乙|三个|| C级|1个|| D级|二十五|| E级|二十三|| F级|二十个|| G级|三个|我试着在网上搜索,但我得到的最接近的答案是重新订购图例。先谢了!干杯梅尔
gwbalxhn1#
您可以通过scale_fill_discrete的breaks参数设置要在图例中显示的类别来实现这一点:
scale_fill_discrete
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)
EDIT在scale_fill_manual的情况下,一个选项是命名你的颜色列表。这有一个额外的好处,你可以把颜色分配给名称或类别,而不用担心你把颜色传递给刻度的values参数的顺序:
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)
1条答案
按热度按时间gwbalxhn1#
您可以通过
scale_fill_discrete
的breaks
参数设置要在图例中显示的类别来实现这一点:EDIT在
scale_fill_manual
的情况下,一个选项是命名你的颜色列表。这有一个额外的好处,你可以把颜色分配给名称或类别,而不用担心你把颜色传递给刻度的values
参数的顺序: