【发布时间】:2014-09-20 08:29:20
【问题描述】:
使用ggplot2 绘制数据点组和连接每个组均值的线的示例,使用相同的aes 映射shape 和linetype:
p <- ggplot(mtcars, aes(gear, mpg, shape = factor(cyl), linetype = factor(cyl))) +
geom_point(size = 2) +
stat_summary(fun.y = mean, geom = "line", size = 1) +
scale_shape_manual(values = c(1, 4, 19))
问题是图例中的点符号相对于线符号显得有点太小而无法看到:
尝试enlarge point size in legend 也会增大线宽,所以这里没有用。
p1 <- p + guides(shape = guide_legend(override.aes = list(size = 4)))
如果线宽是 size 的独特美学,那就太好了。
我尝试添加
+ guides(linetype = guide_legend(override.aes = list(size = 1)))
这只是一个警告。
> Warning message:
In guide_merge.legend(init, x[[i]]) : Duplicated override.aes is ignored.
如果我将linetype aes 移出ggplot() 并移入stat_summary(),这似乎没有什么区别。如果我只想要点符号,我可以从图例中删除线 this way。
p2 <- p + guides(shape = guide_legend(override.aes = list(size = 4, linetype = 0)))
相反,(在图表本身中保留小点符号)我想要 一个单个 图例,其中 both 大点符号就像最后一张图片中一样和 em> 细线符号,如第一张图片所示。有没有办法做到这一点?
【问题讨论】: