ggplot2:更改 scale_color_viridis_c 的 Alpha 但不是图例

Posted

技术标签:

【中文标题】ggplot2:更改 scale_color_viridis_c 的 Alpha 但不是图例【英文标题】:ggplot2: Change Alpha of scale_color_viridis_c but not legend 【发布时间】:2021-12-03 02:35:02 【问题描述】:

我想为我的 ggplot 添加一个 alpha,但不影响图例的 alpha。当前的解决方案是添加:guides(color = guide_legend(override.aes = list(alpha = 1))) 的覆盖。这可以设置 alpha=1,但会将图例比例更改为离散点而不是比例。

如何更改色标的 Alpha,同时保持完整的可见性和图例中的实际比例?

示例代码:

library(ggplot2)

###Generate Mock Data ###
df<- data_frame(y=seq(1:100), x=seq(1:100), z=seq(1:100))

###Plot without Alpha ###
df %>% ggplot(aes(x=x, y=y, color=z)) +
  geom_point()+
  scale_color_viridis_c()

###Plot with Alpha showing alpha on legend with continuous scale ###
df %>% ggplot(aes(x=x, y=y, color=z)) +
      geom_point()+
      scale_color_viridis_c(alpha=0.01)

###Plot with Alpha showing alpha=1 on legend but scale changed to discrete###

df %>% ggplot(aes(x=x, y=y, color=z)) +
  geom_point()+
  scale_color_viridis_c(alpha=0.5)+
  guides(color = guide_legend(override.aes = list(alpha = 1)))

【问题讨论】:

尝试将alpha移动到geom_point(alpha = ...)中。 【参考方案1】:

您可以简单地将您的 alpha 添加到 geom_point() 而不是色标。下面是一个可重现的示例,突出了您当前的方法与实现您所要求的正确方法之间的差异,即,'如何在保持完全可见性和图例中的实际比例的同时更改我的色阶的 alpha ?'

library(ggplot2)
library(vctrs)

###Generate Mock Data ###
df<- data_frame(y=seq(1:100), x=seq(1:100), z=seq(1:100))

###Plot with Alpha = 0 showing points and legend disappears###
ggplot(df,aes(x,y,color=z)) +
      geom_point()+
      scale_color_viridis_c(alpha=0.00)

###Plot with Alpha = 0.1 showing points and legend disappears###
ggplot(df,aes(x,y,color=z)) +
      geom_point()+
      scale_color_viridis_c(alpha=0.1)

###Plot with Alpha = 0 showing points disappear while legend remains visible###
ggplot(df,aes(x,y,color=z)) +
  geom_point(alpha=0.00)+
  scale_color_viridis_c()

###Plot with Alpha = 0 showing points disappear while legend remains visible###
ggplot(df,aes(x,y,color=z)) +
  geom_point(alpha=0.1)+
  scale_color_viridis_c()

【讨论】:

嗨斯蒂芬,我已经用情节更新了我的答案。您会看到两个版本中的 alpha 使用是相同的。唯一的区别是图例保留了完整的可见性和实际比例。 啊我明白了!完美的。谢谢!

以上是关于ggplot2:更改 scale_color_viridis_c 的 Alpha 但不是图例的主要内容,如果未能解决你的问题,请参考以下文章

在ggplot2中更改条形图轮廓

如何更改使用 ggplot2 制作的绘图的背景颜色

ggplot2:更改条形图中每个方面的颜色

如何更改ggplot2中的默认字体大小

更改 ggplot2 中条形图和图例的默认颜色

如何更改ggplot2中散点图的颜色