图例上的ggplot2边框但条形图中没有

ggplot2 border on legend but not in barchart

我正在尝试使用 ggplot2 创建条形图,图例颜色有边框,条形图没有边框。

我尝试添加 scale_fill_manual 并将 'grey32' 映射到市政当局以及 legend.key = element_rect(colour='grey32'),但它们都没有在图例元素周围添加边界。

这是我用这段代码得到的:

ggplot(muns, aes(x=Regional.District, y=Population.2010, fill=Municipality)) +
  geom_bar(stat='identity', width=0.6) +
  xlab("Regional District") + ylab("Population 2010") +
  scale_y_continuous(labels = comma) +
  scale_fill_manual(values=fill.vals, breaks=muns$Municipality, labels=muns$lab) +
  geom_text(aes(y=bylaw.sums[1], label=c('No Bylaw')), colour = "gray32") +
  geom_text(aes(y=bylaw.sums[1]*2+bylaw.sums[2], label=c('Bylaw')), colour = "gray32") +
  theme(text=element_text(size=12, family="Open Sans"))

这就是我想要的:

我试过:

scale_colour_manual(values=greys, breaks=muns$Municipality, labels=muns$lab) +

以及

theme(legend.key = element_rect(colour='grey32'))

谢谢!

尝试+ guides(fill = guide_legend(override.aes = list(colour = "black")))

工作示例:

ggplot(iris, aes(x = Species, fill = Species)) +
    geom_bar() + 
    guides(fill = guide_legend(override.aes = list(colour = "black")))

在这种情况下,您似乎确实需要用 "u" 拼写 "colour"。

我通常使用此方法做相反的事情(从填充图例中删除颜色)或覆盖图例的 alpha 设置。

根据您的示例图判断,您可能还想将 reverse = TRUE 传递给 guide_legend,这会将橙色放在底部,白色放在顶部以匹配您的图。