控制ggplot2图例而不影响绘图

我正在用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. 如何改变图例中的线条宽度而不改变graphics?
  2. 如何绘制图中的线条,但在图例中绘制点/点/方块?

要只改变图例中的线宽,你应该使用functionguides() ,然后为colour=使用guide_legend()override.aes=和设置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))) 

在这里输入图像说明