如何更改ggplot图例以使“填充”是正方形而“线型”是线?

Posted

技术标签:

【中文标题】如何更改ggplot图例以使“填充”是正方形而“线型”是线?【英文标题】:How to change ggplot legend so that `fill` is a square and `linetype` is a line? 【发布时间】:2021-12-21 15:55:38 【问题描述】:

我有一个简单的情节:

library(ggplot2)
ggplot(mtcars, aes(mpg, disp, fill = "fill")) +
  geom_violin(aes(linetype = "pattern"), 
              key_glyph = draw_key_path)

由reprex package (v0.3.0) 于 2021-11-08 创建

如何更改图例以将 fill 显示为正方形,而将 linetype 模式显示为直线而不是正方形?

【问题讨论】:

寻找guide_legend(override.aes = ...),例如aosmith.rbind.io/2020/07/09/ggplot2-override-aes(和?guide_legend)。 (但我认为您的意思是取消图例形状框中的灰色背景,对吗?不确定之前的评论是否解决了...) 【参考方案1】:

我认为本地没有办法做到这一点。这是一个 hacky 解决方案,您可以结合guide_legend(override.aes = list(...)) 编写自己的关键绘图函数。

library(ggplot2)
#> Warning: package 'ggplot2' was built under R version 4.1.1

my_key <- function(data, params, size) 
  if (all(is.na(data$fill))) 
    draw_key_path(data, params, size)
   else 
    draw_key_polygon(data, params, size)
  


ggplot(mtcars, aes(mpg, disp, fill = "fill")) +
  geom_violin(aes(linetype = "pattern"),
              key_glyph = my_key) +
  guides(linetype = guide_legend(override.aes = list(fill = NA)))

由reprex package (v2.0.1) 于 2021-11-08 创建

【讨论】:

以上是关于如何更改ggplot图例以使“填充”是正方形而“线型”是线?的主要内容,如果未能解决你的问题,请参考以下文章

ggplot散点图中的传说问题

使用长标签名称设置标准图例键大小 ggplot

使用文本标记最小和最大刻度填充渐变图例:ggplot2

将图例中的 ggplot 彩色线条更改为正方形或圆形

如何在使用 ggplot2 制作的单个图中组合填充(列)和颜色(点和线)图例?

如何更改ggplot中的图例标题