R语言 仅显示部分图例内容

gstyhher  于 2023-02-01  发布在  其他
关注(0)|答案(1)|浏览(287)

我只想在ggplot2图例中显示前3个最丰富的组。
例如,在此表中,我有7个组,我只想在ggplot2图例中显示组D、E、F
| 群|样本量|
| - ------|- ------|
| A类|第二章|
| 乙|三个|
| C级|1个|
| D级|二十五|
| E级|二十三|
| F级|二十个|
| G级|三个|
我试着在网上搜索,但我得到的最接近的答案是重新订购图例。
先谢了!
干杯梅尔

gwbalxhn

gwbalxhn1#

您可以通过scale_fill_discretebreaks参数设置要在图例中显示的类别来实现这一点:

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)

EDITscale_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)

相关问题