75

我正在用 ggplot2 绘制线条,如下所示:

ggplot(iris, aes(Petal.Width,Petal.Length,color=Species)) + geom_line() + theme_bw()

当前地块.

我发现图例标记很小,所以我希望它们更大。如果我改变大小,情节上的线条也会改变:

ggplot(iris, aes(Petal.Width,Petal.Length,color=Species)) + geom_line(size=4) + theme_bw()

粗线条.

但我只想看到传说中的粗线,我希望情节上的线条细。我尝试使用legend.key.size,但它改变了标记的正方形,而不是线的宽度:

library(grid)  # for unit
ggplot(iris,aes(Petal.Width,Petal.Length,color=Species))+geom_line()+theme_bw() + theme(legend.key.size=unit(1,"cm"))

大传奇钥匙

我也尝试使用积分:

ggplot(iris,aes(Petal.Width,Petal.Length,color=Species)) + geom_line() + geom_point(size=4) + theme_bw()

但当然它仍然会影响情节和传说:

积分

我想用线来作图,用点/点来作图例。

所以我要问两件事:

  1. 如何在不改变情节的情况下改变图例中的线宽?
  2. 如何在情节中画线,但在图例中画点/点/正方形?
4

1 回答 1

113

要仅在图例中更改线宽,您应该使用 functionguides()然后colour=使用guide_legend()withoverride.aes=和 set size=。这将覆盖绘图中使用的大小,并将新的大小值仅用于图例。

ggplot(iris,aes(Petal.Width,Petal.Length,color=Species))+geom_line()+theme_bw()+
       guides(colour = guide_legend(override.aes = list(size=3)))

在此处输入图像描述

要获得图例中的点和绘图中的线,将添加解决方法geom_point(size=0)以确保点不可见,然后guides()设置linetype=0为删除线并size=3获得更大的点。

ggplot(iris,aes(Petal.Width,Petal.Length,color=Species))+geom_line()+theme_bw()+
       geom_point(size=0)+
       guides(colour = guide_legend(override.aes = list(size=3,linetype=0)))

在此处输入图像描述

于 2013-05-03T09:56:08.913 回答