【问题标题】:Control ggplot2 legend look without affecting the plot控制 ggplot2 图例外观而不影响绘图
【发布时间】:2013-05-03 09:48:13
【问题描述】:

我正在用 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. 如何在绘图中画线,而在图例中画点/点/正方形?

【问题讨论】:

    标签: r plot ggplot2 legend


    【解决方案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)))
    

    【讨论】:

    • 太棒了,谢谢!这就是我需要的!有机会回答我的第二个问题吗?
    • 可以在主题中设置吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-02-28
    • 1970-01-01
    • 1970-01-01
    • 2023-03-22
    • 1970-01-01
    • 1970-01-01
    • 2018-04-05
    相关资源
    最近更新 更多