在geom_smooth()中调整大小会使具有不同线条类型的图例看起来相同

时间:2013-03-20 09:34:57

标签: r ggplot2

我想绘制六种不同的线型,例如像这样:

d = data.frame(
  x=sample(1:100,30,rep=T),
  y=sample(1:100,30,rep=T),
  exp=rep(c("foo","bar","baz","yak","yaz","bla"),5)
)
ggplot(d, aes(x, y, color=exp, lty=exp)) + 
geom_point(alpha=0.15) + 
geom_smooth(size=2)

这给了我以下传说:

显然,size=2改变了这里的外观,使你现在无法再辨别出不同的线型。级别1,3和4看起来相似,5和6也是如此。当我将其调整为size=1(或完全忽略大小)时,我得到了所需的结果:

是否有任何方法可以为图例中的不同线型获得有意义的表示,即使图中的线条比默认线条更粗?

1 个答案:

答案 0 :(得分:1)

您可以通过调整图例属性的sizewidth来实现此目的。这些示例直接来自hadley's wiki on legend attributes

# size attribute
theme(legend.key.size = unit(2, "cm"))

(或)

# width attribute
theme(legend.key.width = unit(2, "cm"))

也就是说,试试这个:

ggplot(d, aes(x, y, color=exp, lty=exp)) + 
geom_point(alpha=0.15) + 
geom_smooth(size=2) + 
theme(legend.key.size = unit(2, "cm"))

注意:如果找不到require(grid)错误,您可能需要加载unit()

编辑:这是我使用此代码获得的情节,对于您发布的示例:

ggplot(d, aes(x, y, color=exp, lty=exp)) + 
    geom_point(alpha=0.15) + 
    geom_smooth(size=2, se=FALSE) + 
    theme(legend.key.size = unit(2, "cm"))

enter image description here