1

我想画六种不同的线型,比如这样:

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(或完全忽略大小)时,我得到了想要的结果:

有什么方法可以让图例中的不同线型得到有意义的表示,即使图中的线本身比默认线厚?

4

1 回答 1

1

您可以通过调整sizeor widthof legend 属性来实现这一点。这些示例直接取自hadley 的关于 legend attributes 的 wiki

# 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"))

在此处输入图像描述

于 2013-03-20T09:45:22.613 回答