控制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()
当然,它仍然影响剧情和传奇:
我想用图线和图例中的点/点。
所以我问了两件事情:
- 如何改变图例中的线条宽度而不改变graphics?
- 如何绘制图中的线条,但在图例中绘制点/点/方块?
要只改变图例中的线宽,你应该使用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)))