使用标识比例时为alpha添加图例

时间:2017-09-14 15:08:38

标签: r ggplot2

我建立了一个有点复杂的情节,并希望手动指定每个点的alpha。我可以用scale_alpha_identity做到这一点,到目前为止一切顺利。但现在我想为我的alpha量表添加一个图例。添加scale_alpha_identity指南似乎不起作用 - 即使我尝试添加符号和标签,我也会收到错误,如文档所示:http://ggplot2.tidyverse.org/reference/scale_identity.html

最小的例子:这会产生我喜欢的情节,但没有传说。

ggplot(data = iris) + 
  geom_point(aes(x = Sepal.Length, y = Sepal.Width, 
                 alpha = Petal.Length / max(Petal.Length))) + 
  scale_alpha_identity()

根据文档,我认为这样可行,但它没有:

ggplot(data = iris) + 
  geom_point(aes(x = Sepal.Length, y = Sepal.Width, 
                 alpha = Petal.Length / max(Petal.Length))) + 
  scale_alpha_identity(breaks = c(0, 1), labels = c(0, 1), guide = 'legend')

我还尝试了许多其他变体:将'colorbar''legend'直接传递给guide参数,包含和没有中断和标签,传递guide_legendguide_colorbar而不是字符串 - 没有运气,只是不同的错误信息。根据{{​​3}}中的建议添加虚假比例并不适用于我,因为它会覆盖我的身份比例。

2 个答案:

答案 0 :(得分:3)

如果您在limits中设置了scale_alpha_identity,则可以通过guides添加图例。

ggplot(data = iris) + 
    geom_point(aes(x = Sepal.Length, y = Sepal.Width, 
                   alpha = Petal.Length / max(Petal.Length))) + 
    scale_alpha_identity(limits = c(.2, 1)) +
    guides(alpha = guide_legend() )

答案 1 :(得分:0)

根据https://github.com/tidyverse/ggplot2/issues/2112, 可能的解决方法是使用size身份功能...

ggplot(data = iris) + 
  geom_point(aes(x = Sepal.Length, y = Sepal.Width, 
                 alpha = Petal.Length / max(Petal.Length))) + 
  scale_size_identity(guide = 'legend')