首页 > 解决方案 > 如何在 geom_bar 的图例中仅显示 3 个标签中的 2 个

问题描述

我有以下数据集,我想使用ggplot2on绘制它R

set.seed(1)
dat <- data.frame(Q = 1:5, R = runif(5), type = c("No Label","Label 1","Label 2","No Label","No Label"))

我想使用以下代码绘制它

ggplot(dat, aes(fill=type, Q, R)) + 
    geom_bar(stat="identity") +                   
    scale_fill_grey(start = 0.8, end = 0.1) +     
    labs(x = "Bin", y =   "R" ) +
    theme_bw() +
    ylim(0,1)+
    theme(legend.title = element_blank(),
          legend.position = "bottom",
          axis.text=element_text(size=28),
          axis.title=element_text(size=28),
          legend.text = element_text(size = 28),
          legend.spacing.x = unit(1.0, 'cm'))

但我想在图例中只显示分组数据的标签Label 1Label2. 我找不到办法做到这一点。任何想法?谢谢你。

标签: rggplot2legend

解决方案


尝试breaks在您的scale_fill_grey()语句中使用您可以定义所需标签的方式:

#Code
ggplot(dat, aes(fill=type, Q, R)) + 
  geom_bar(stat="identity") +                   
  scale_fill_grey(start = 0.8, end = 0.1,breaks=c('Label 1','Label 2')) +     
  labs(x = "Bin", y =   "R" ) +
  theme_bw() +
  ylim(0,1)+
  theme(legend.title = element_blank(),
        legend.position = "bottom",
        axis.text=element_text(size=28),
        axis.title=element_text(size=28),
        legend.text = element_text(size = 28),
        legend.spacing.x = unit(1.0, 'cm'))

输出:

在此处输入图像描述


推荐阅读