【问题标题】:ggplot density plot alpha not rendered in legendggplot 密度图 alpha 未在图例中呈现
【发布时间】: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 来做到这一点。

标签: r ggplot2


【解决方案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)),但这只是在复制我已经看到的内容。
猜你喜欢
  • 1970-01-01
  • 2018-08-19
  • 2018-11-26
  • 1970-01-01
  • 2019-11-25
  • 1970-01-01
  • 2015-10-16
  • 2017-11-08
  • 1970-01-01
相关资源
最近更新 更多