更改图例几何类型

Posted

技术标签:

【中文标题】更改图例几何类型【英文标题】:Change legend geom type 【发布时间】:2021-04-12 17:57:04 【问题描述】:

我有一个使用 alpha 作为其刻度之一的线图。

不幸的是,似乎有一个错误导致 alpha 图例无法正常工作,即使它们正在情节中工作并且 Hadley 已将其视为 Windows 错误而将其驳回。

作为一种解决方法,有谁知道如何将图例中的几何图形从一条线更改为一个框(以与显示条形图的填充相同的方式)?

我已经修改了 guide_legend 的 overwrite_aes 参数,但是如果这是解决方案,我还没有弄清楚要使用什么参数。

示例 ggplot:

ggplot(data, aes(x = x)) + 
    geom_line(aes(y = y1, alpha = "test 1")) +
    geom_line(aes(y = y2, alpha = "test 2")) +
    scale_alpha_manual(values = c(1, 0.5))

  

【问题讨论】:

【参考方案1】:

也许它并不完美,但我发现 override.aes() 可以工作。

library(tidyverse)
dat <- tibble(
  x = 1:10, 
  y1 = runif(10), 
  y2 = runif(10)
)

ggplot(dat, aes(x = x)) + 
  geom_line(aes(y = y1, alpha = "test 1")) +
  geom_line(aes(y = y2, alpha = "test 2")) +
  scale_alpha_manual(values = c(1, 0.5)) + 
  guides(alpha = guide_legend(override.aes = list(size = 6))) +
  theme_classic()


编辑:有些“黑客”

这肯定比第一个更hack。

ggplot() + 
  geom_line(data=dat, aes(x=x, y = y1), alpha=1) +
  geom_line(data=dat, aes(x=x, y = y2), alpha =.5) + 
  geom_segment(aes(x=min(dat$x), xend=min(dat$x + .05*diff(range(dat$x))), 
                   y = max(c(dat$y1, dat$y2)), yend=max(c(dat$y1, dat$y2))), 
               alpha=1, size=6) +  
  geom_segment(aes(x=min(dat$x), xend=min(dat$x + .05*diff(range(dat$x))), 
                   y = max(c(dat$y1, dat$y2))-.025, yend=max(c(dat$y1, dat$y2))-.025), 
               alpha=.5, size=6) +  
  geom_text(aes(x=min(dat$x + .06*diff(range(dat$x))), 
                   y = max(c(dat$y1, dat$y2)), 
                label = "test1"), hjust=0) + 
  geom_text(aes(x=min(dat$x + .06*diff(range(dat$x))), 
                   y = max(c(dat$y1, dat$y2))-.025, 
                label = "test2"), hjust=0)+
  theme_classic()

【讨论】:

这是一个很好的解决方案,但不幸的是对于我的目的来说还不够“hacky”。由于图形错误是一条线,我仍然遇到同样的问题:我的图例没有显示任何 alpha 值 @DanielV 我添加了一个可能适合您需求的“hackier”解决方案。 这更老套,但我已经有了颜色和线型的图例,所以这也行不通。周末多了,但我想我要在数据集中使用创建的 NA 位置值创建新的几何图形。

以上是关于更改图例几何类型的主要内容,如果未能解决你的问题,请参考以下文章

Visual Studio 2016堆积条形图图例:更改标签标题

图例标签组合图(ggplot 和拼凑)

arcgis engine 中如何判读选中的元素是指北针、图例或比例尺等类型元素?

使用多个几何图形时如何消除ggplotly重复的图例条目

如何在一个 ggplot2 图中为两个几何图层添加图例?

ggplot2中具有不同x尺度和不同几何图形的两个数据框的图例控制