r - 控制ggplot2图异常(exception)观而不影响绘图

标签 r plot ggplot2 legend

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

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

current plot .

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

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

thick plot lines .

但我只想看到图例中的粗线,我希望绘图上的线变细。我尝试使用 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"))

big legend keys

我也尝试过使用积分:

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

但当然它仍然会影响情节和图例:

points

我想使用线条作为绘图,使用点/点作为图例。

所以我问两件事:

  1. 如何在不更改绘图的情况下更改图例中的线宽?
  2. 如何在图中绘制线条,但在图例中绘制点/点/方 block ?

最佳答案

要仅更改图例中的线宽,您应该使用函数 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)))

enter image description here

要获取图例中的点和绘图中的线条,解决方法是添加 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)))

enter image description here

关于r - 控制ggplot2图异常(exception)观而不影响绘图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16356052/

相关文章:

r - 使用 dplyr 和 mutate 对多列中的每一列使用单独的条件

linux - 如何在 xmgrace 中制作正确的动画图形?

r - 使用 ggraph 绘制二元组共现时出现问题,某些线条未显示

r - 如何在 R 中绘制具有 3 个因子的响应变量?

R Shiny 使 slider 值动态化

user-interface - 添加滚动条到带有子图的图形

r - 使用 ggplot2 堆积点图

r - 如何在 ggplot2 中为使用 stat_summary 制作的线条添加图例?

linux - 使用 tm : bug on linux? 在 R 函数中分配全局变量

javascript - 如何在 raphael.js 中定位与中心相关的对象