如何使用geom_vline和geom_histogram在R ggplot2中删除填充比例图例中的线条

4

基础知识:使用R统计软件、ggplot2、geom_vline和geom_histogram来可视化一些数据。问题出在图例键上。

我正在尝试绘制一对某些随机模拟的直方图,并在这个图中添加代表确定性模拟结果的几条线。我已经将数据绘制出来,但是直方图的图例键上有不必要的黑线穿过它们的中间。您能帮我去掉这些黑线吗?这里有一些重现问题的示例代码:

df1 <- data.frame(cond = factor( rep(c("A","B"), each=200) ), 
                 rating = c(rnorm(200),rnorm(200, mean=.8)))

df2 <- data.frame(x=c(.5,1),cond=factor(c("A","B")))

ggplot(df1, aes(x=rating, fill=cond)) + 
  geom_histogram(binwidth=.5, position="dodge") +
  geom_vline(data=df2,aes(xintercept=x,linetype=factor(cond)),
             show_guide=TRUE) +
  labs(fill='Stochastic',linetype='Deterministic')

在此输入图片描述 编辑:添加了图片

祝好, Ryan

1个回答

3
一种解决方法是更改 geom_histogram()geom_vline() 的顺序。然后再添加另一个 geom_vline(),不使用 aes(),只提供 xintercept=linetype=。这将不会移除线条,但会将它们隐藏在颜色图例项下面。
ggplot(data=df1, aes(x=rating, fill=cond)) + 
  geom_vline(data=df2,aes(xintercept=x,linetype=factor(cond)),
             show_guide=TRUE) +
  geom_histogram(binwidth=.5, position="dodge") +
  geom_vline(xintercep=df2$x,linetype=c(1,3))+
  labs(fill='Stochastic',linetype='Deterministic')

enter image description here


谢谢您!您解决了我的问题。如果您不介意,能否解释一下为什么会在填充键中出现这些线条?对我来说,传奇键(红色或绿色的条形图与黑线)与实际数据(红色或绿色的条形图没有线条)不匹配,这似乎很奇怪。 - RyanStochastic
我不确定为什么会发生这种情况,但我认为它可能与geom_vline()有关。即使我使用具有不同级别和名称的数据框,它仍然会发生。 - Didzis Elferts
ggplot对我来说仍然是一个美丽的谜团。再次感谢。 - RyanStochastic
也许值得提交一个关于这个问题的“issue”。我猜测这可能是geom_vlineshow_guide的一个bug,或者需要更多关于“guides”的文档。 - mnel

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接