【问题标题】:ggplot reduce line weight in legendggplot减少图例中的线宽
【发布时间】:2016-03-22 18:46:43
【问题描述】:

我正在尝试使用 ggplot2 控制绘图

示例脚本:

dat1 <- data.frame(
     sex = factor(c("Female","Female","Male","Male")),
     time = factor(c("Lunch","Dinner","Lunch","Dinner"), levels=c("Lunch","Dinner")),
     total_bill = c(13.53, 16.81, 16.24, 17.42)
)
p = ggplot(data=dat1, aes(x=sex, y=total_bill, group=time, shape=time, color=time)) + geom_line() + geom_point()

现在我想控制形状和线条在图例中的外观。我想要一个更大的形状,以及传说中的细线。但我不能同时执行。

如果我这样做,

p = p + guides(colour = guide_legend(override.aes = list(size=5)))

线条和形状都很粗,类似于图B。

如果我这样做,

p = p + guides(colour = guide_legend(override.aes = list(size=5,linetype=0)))

然后形状以正确的大小出现,但线条消失了(图 A)。我尝试过这样的事情没有成功。

p = p + guides(colour = guide_legend(override.aes = list(size=5,linetype=0.5)))

如何实现图例中的大形细线?

【问题讨论】:

  • 据我所知,不是使用常规的 ggplot2 命令。但是有一个look here
  • 有点小技巧,但是...添加一个额外的 geom_point 并调整 alpha ...geom_point(size=5, alpha=0) + geom_point(show.legend=FALSE) + guides(colour = guide_legend(override.aes = list(alpha=1)))

标签: r ggplot2 legend


【解决方案1】:

感谢Sandy Musprattuser20650。这两个链接都非常有用。

为了简单起见,我使用了 user20650 的代码。

完整代码在这里:

dat1 <- data.frame(
    sex = factor(c("Female","Female","Male","Male")),
    time = factor(c("Lunch","Dinner","Lunch","Dinner"), levels=c("Lunch","Dinner")),
    total_bill = c(13.53, 16.81, 16.24, 17.42)
)
p = ggplot(data=dat1, aes(x=sex, y=total_bill, group=time, shape=time, color=time)) 
p = p + geom_line() + geom_point(size=5, alpha=0) + geom_point(show.legend=FALSE) 
p = p + guides(colour = guide_legend(override.aes = list(alpha=1)))

谢谢。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-12-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多