【问题标题】:Set the alpha of points in ggplot to a numeric vector将 ggplot 中点的 alpha 设置为数值向量
【发布时间】:2017-09-13 16:32:21
【问题描述】:

我正在尝试使用 ggplot 创建 NMDS 图。除了点(社区/组合)和船体等的标准绘图之外,我还想调整每个点的 alpha。

我计算了一个从 0 到 1 的数值向量(称为“Alpha”),它反映了与每个点对应的调查时间,我想用它来修改每个点的 alpha。到目前为止,我一直在使用以下主题的变体:

 ggplot() +
     geom_point(data = data.scores, aes(x = NMDS1, y = NMDS2, colour =Treatment), size = 3) +
     scale_colour_manual(values = c("Burnt" = "black", "Grazed" = "tan4","Control" = "green4")) +
     scale_alpha_manual(values = Alpha) +
     geom_polygon(data = hull.data, aes( x = NMDS1, y = NMDS2, colour = Treatment),
                  linetype = "dashed", fill = NA) +
     coord_equal() +
     theme_bw() +
     theme(panel.border = element_blank(), panel.grid.major = element_blank(),
           panel.grid.minor = element_blank(), axis.line = element_line(colour = "black"),
           legend.position="top")

这只会让我得到所有点的 alpha 为 1、alpha 不是 1 但设置为相同值(大概是我的向量中的第一个值)或错误消息的图。有谁知道我做错了什么?

作为参考,我能够相当容易地使用基本 R 图形创建我想要的东西,但我需要我的绘图是一个 ggplot 图形:

【问题讨论】:

    标签: r plot ggplot2 alpha


    【解决方案1】:

    ggplot() 语法要求为层映射的值在该层中传递,因此在 geom_point() 中,而不是通过添加比例。所以现在您没有定义要应用 alpha 比例的图层,因此所有图层都显示为 alpha = 1(默认值)。

    您可以直接在geom_point() 中使用原始向量。使用mtcars 的可重现示例:

    library(ggplot2)
    set.seed(1)
    
    # sim your Alpha
    Alpha <- runif(nrow(mtcars))
    
    ggplot(data = mtcars, aes(mpg, hp)) +
        geom_point(alpha = Alpha)
    

    scale_alpha_manual() 不会对此绘图产生任何影响,因为您没有使用 aes(alpha = ...) 映射任何内容。

    【讨论】:

    • 对于任何做过与此类似的事情并发现您最终获得 alpha 值的图例条目的人,您可以删除图例的 alpha 位,同时保留点颜色的位使用: scale_alpha_continuous(guide=F) + 在人们建议我编辑原始答案以改进它之前,我已经这样做了,但它被拒绝了......
    • @James - 你不应该使用F 代替FALSE,因为F 不是R 中的保留值(T 也不是)。即,您可以运行一个设置F &lt;- TRUE; T &lt;- FALSE 的脚本,并且代码中基于FT 的所有逻辑测试都将被反转。
    猜你喜欢
    • 2014-02-14
    • 1970-01-01
    • 2022-01-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多