如何独立调整图例中颜色线条、符号大小和形状大小?

4

我有一个折线图,其中将颜色和形状组合到同一个图例中。我希望图例中的点大小更大,而图例中的线条保持不变,以使形状更清晰。

如何增加ggplot2图例中点的大小?中,我了解到可以使用+ guides(colour = guide_legend(override.aes = list(size=10)))来改变点大小,但这也会改变线条的大小。如果我添加guides(shape = guide_legend(override.aes = list(size=4)),color = guide_legend(override.aes = list(size=1))),它会显示“忽略重复的override.aes,仅使用第二个大小。”

如何在图例中独立地更改颜色线条大小和形状大小?

示例代码:

example <- data.frame(a=c(1,2,3,1,2,3), b=c(0.1,0.2,0.3,0.4,0.5,0.6), c=c('a','a','a','b','b','b'))

ggplot(example, aes(x=a, y=b, color=c, shape=c))+
  geom_line()+
  geom_point()+
  scale_colour_manual(name="title", breaks=c("a","b"),
                      labels=c("label1","label2"),
                      values=c("#e41a1c", "#377eb8"))+
  scale_shape_manual(name="title", breaks=c("a","b"),
                     labels=c("label1","label2"),
                     values=c(15, 16))+
  guides(shape = guide_legend(override.aes = list(size=4)),
         color = guide_legend(override.aes = list(size=1)))

示例图表

1个回答

3

ggplot使用的layer()函数有一个key_glyph参数,您可以提供一个自定义函数。您可以使用此函数使点变大,但不是线条。如果您需要自定义线条调整,则可以编写类似的函数包装draw_key_path()

library(ggplot2)

example <- data.frame(a=c(1,2,3,1,2,3), b=c(0.1,0.2,0.3,0.4,0.5,0.6), c=c('a','a','a','b','b','b'))

large_points <- function(data, params, size) {
  # Multiply by some number
  data$size <- data$size * 2
  draw_key_point(data = data, params = params, size = size)
}

ggplot(example, aes(x=a, y=b, color=c, shape=c))+
  geom_line()+
  geom_point(key_glyph = large_points)+
  scale_colour_manual(name="title", breaks=c("a","b"),
                      labels=c("label1","label2"),
                      values=c("#e41a1c", "#377eb8"))+
  scale_shape_manual(name="title", breaks=c("a","b"),
                     labels=c("label1","label2"),
                     values=c(15, 16))

2020年4月8日由reprex包 (v0.3.0)创建


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接