ggplot 密度图 alpha 未在图例中呈现

Posted

技术标签:

【中文标题】ggplot 密度图 alpha 未在图例中呈现【英文标题】:ggplot density plot alpha not rendered in legend 【发布时间】:2018-09-20 10:37:01 【问题描述】:

我正在尝试使用 ggplot 生成密度图,其中绘图的颜色和填充由一个参数确定,填充的 alpha 由第二个参数确定。

我可以让图形以我想要的方式呈现,但在图例中没有描述 alpha 的值。

由于我将 alpha 的值设置为 0 和 0.3,我希望图例会显示具有相应不透明度的框(即白色和灰色)。而是有两个具有相同不透明度的框。

任何建议将不胜感激。

我用 mtcars 的示例图重新创建了问题

ggplot(
  mtcars,
  aes(
    x=wt,
    fill=factor(cyl),
    color=factor(cyl),
    alpha=factor(am)
  )
) +
  geom_density() +
  scale_alpha_discrete(
    name="transmission",
    labels=c("auto","manual"),
    range = c(0,0.3)
  ) +
  theme_bw()

【问题讨论】:

我建议使用不同的linetypes 或facets 而不是alpha 感谢您的建议。我已经在图中使用构面来分离出一个参数,但是更改线型是个好主意。为了美观,我希望用 alpha 来做到这一点。 【参考方案1】:

传输 (factor(am)) 没有与之关联的颜色,只有 alpha 级别。因此,图例显示了白色的 0% 和 30% 透明度,这是默认颜色。所以 alpha 被渲染了,但你只是看不到它。您可以通过在图例中使用例如黑色填充传输来解决此问题。

ggplot(
    mtcars,
    aes(
        x=wt,
        fill=factor(cyl),
        color=factor(cyl),
        alpha=factor(am)
    )
)+
    geom_density()+
    scale_alpha_discrete(
        name="transmission",
        labels=c("auto","manual"),
        range = c(0,0.3)
    )+
    theme_bw()+
   guides(alpha = guide_legend(override.aes = list(fill = c('black','black'))))

【讨论】:

谢谢,我认为解决方案在于override.aes,但我不知道如何实现它。我试过override.aes = list( alpha = c(0, 0.3)),但这只是在复制我已经看到的内容。

以上是关于ggplot 密度图 alpha 未在图例中呈现的主要内容,如果未能解决你的问题,请参考以下文章

ggplot2密度图图例显示错误的组名和错误的颜色

R语言使用ggplot2包使用geom_density()函数绘制分组密度图(改变图例位置移除图例)实战(density plot)

图例不适合ggplot密度

图例在 ggplot2 密度图中不显示线型

使用ggplot2在叠加密度图中重复图例

R语言ggplot2可视化热力图(密度图)并使用scale_fill_continuous函数自定义图像的色彩梯度(colour gradient)自定义设置图例中的色彩梯度反序(reverse)