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

时间:2015-01-08 21:14:31

标签: r ggplot2 border legend

我正在尝试使用ggplot2创建一个条形图,边框用于图例颜色,但不用于条形图。

我尝试添加scale_fill_manual,其中'grey32'映射到Municipalities以及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"))

bar_chart_with_no_borders

这就是我想要的: bar_chart_with_borders_on_legend_but_not_chart

我试过了:

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

以及

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

谢谢!

1 个答案:

答案 0 :(得分:5)

尝试+ 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”拼写“颜色”。

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

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