21

过去这一定惹恼了某人,所以如果这是重复的,请原谅,我会删除它。使用时跨越图例的斜线geom_bar可能很烦人。例如:

x  <- c("a","b")
y  <- c(1,2)
df <- as.data.frame(cbind(x,y))
a  <- ggplot(df,aes(x=x,y=y,fill=x))
a + geom_bar(colour="black") + scale_fill_manual(values=c("white", "black"))

在此处输入图像描述

当我使用彩色条时,我会使用这项工作,首先绘制没有颜色的条,例如

a + geom_bar() + geom_bar(colour="black",show_guide=FALSE) +
 scale_fill_manual(values=c("white", "black"))

然而,当填充为白色时,这会在图例中留下一个令人不满意的空白框,没有边框。例如

在此处输入图像描述

我过去使用图形软件手动修复了这个问题,但现在我认为这必须有足够多的人在这里提问。我们可以ggplot只用黑色轮廓而不用斜线绘制图例吗?

4

2 回答 2

13

这,

 a + geom_bar() + geom_bar(colour="black",show_guide=FALSE) +
 scale_fill_manual(values=c("white", "black")) + 
 opts(legend.key = theme_rect(fill = 'black'))

给了我这个, 在此处输入图像描述 感谢这个网站

阿洛斯,您使用colour而不是得到相同的结果fill(可能有人认为一个更好)。

a + geom_bar() + geom_bar(colour="black",show_guide=FALSE) + 
scale_fill_manual(values=c("white", "black")) + 
opts(legend.key = theme_rect(colour = 'black'))

重要说明:在现代版本的 ggplot2opts已被弃用并替换为theme,并theme_rect已替换为element_rect.

于 2012-05-18T23:23:06.317 回答
3

不,这就是它的轮廓。如果您使用灰色而不是白色(使用您的技巧),它会更容易区分。您还可以为图例添加背景颜色以使其更易于区分并保持白色。有关更多详细信息,请参见本页底部:

http://wiki.stdout.org/rcookbook/Graphs/Legends%20(ggplot2)/

我希望有一种不那么骇人听闻的方式来做到这一点。

于 2012-05-18T23:10:27.523 回答