如何使用geom_vline和geom_histogram r ggplot2从填充比例图例中删除线条

时间:2013-02-18 18:36:50

标签: r ggplot2 data-visualization legend

基础: 使用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')

enter image description here 编辑:添加图片

干杯, 莱恩

1 个答案:

答案 0 :(得分: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