R - 更改 ggplot2 中的形状图例 (geom_col)

R - change shape legend in ggplot2 (geom_col)

我正在尝试更改 geom_col 图的图例形状。默认情况下,图例是方形的,我想更改为圆形(或三角形或其他任何形状)。由于颜色由 fill 控制,我认为覆盖此参数应该可以解决问题:

library(ggplot2)
data("Titanic")
Titanic <- as.data.frame(Titanic)

ggplot(data = Titanic, aes(x = Class, y = Freq, fill = Survived)) + geom_col() +
   guides(fill = guide_legend(override.aes = list(shape = 16))) 

我也试着说得更具体一些

ggplot(data = Titanic, aes(x = Class, y = Freq, fill = Survived)) + geom_col() +
  scale_shape_manual(values = c("No" = 16, "Yes" = 17)) 

但传说并没有改变。有什么建议吗?

(我确实看过相关问题Changing shape in legend ggplot2,但它似乎也不起作用。我想是因为没有使用geom_point?)

这方面的文档很少,但是层函数的一个参数是 key_glyph 参数,它可以指定将哪种内容放入图例中。如果您有条形图并想要 point-like 个图例,您可以覆盖默认值。随后,您可以覆盖填充图例中的美学以满足您的需要。不过一定要选择具有填充参数的形状。

library(ggplot2)
data("Titanic")
Titanic <- as.data.frame(Titanic)

ggplot(Titanic, aes(x = Class, y = Freq, fill = Survived)) + 
  geom_col(key_glyph = draw_key_point) +
  guides(fill = guide_legend(override.aes = list(shape = 21, size = 5))) 

reprex package (v0.3.0)

于 2020-08-25 创建