控制GGPLOT2传说看不影响剧情(Control ggplot2 legend look with

2019-09-01 20:46发布

我绘制线条像这样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. 如何画中的情节线,但画点/点/平方的传奇?

Answer 1:

为了改变线宽度仅在图例中应该使用功能guides()然后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)))



文章来源: Control ggplot2 legend look without affecting the plot