如何在ggplot2中添加alpha颜色比例

时间:2019-04-25 18:48:02

标签: r ggplot2 plot

我正在尝试使用比例尺创建具有不同Alpha颜色的点

我的数据框架:

   df2$membership
  [1] 0.34185026 0.15610992 0.04991413 0.00000000 0.52687792 0.16631913 0.11915588 0.26531666 0.16631913 0.34312613 0.39910748 0.00000000
  [13] 0.31770686 0.37701944 0.19777656 0.00000000 0.28141323 0.38329395 0.00000000 0.45098905 0.15583159 0.00000000 0.15610992 0.00000000
  [25] 0.45297710 0.38409023 0.38329395 0.06272793 0.28141323

  df$cluster+1
  [1] 3 2 3 1 3 3 3 3 3 3 3 3 3 3 3 2 3 3 1 3 3 1 2 1 3 3 3 2 3

  df
  V1         V2
  1   -60.950322   3.268223
  2   120.989186 -18.171861
  3  -100.891471 -54.566570
  4   123.853486 -31.076373
  5    47.068591  21.517879
  6   -96.289311 -32.327825
  7   -55.133477 -23.899109
  etc

我用以下代码通过plot()做到了

   plot(df, col=df2$cluster+1, pch=21, cex = 2) 

   colors <- mapply(function(col, i) adjustcolor(col, alpha.f = df2$membership_prob[i]), 
             palette()[df2$cluster+1], seq_along(df2$cluster))

   points(df, col=colors, pch=20, cex = 2) +
   text(df, labels = rownames(df), pos = 4)

哪个给我:

Points with differing alpha levels

但是我在ggplot2中执行此操作时遇到了问题,因为我已经在ggplot2中完成了所有其他图形,并且外观也大不相同。

我需要的是一种使用连续刻度(df2 $ membership_prob)作为我的货盘的Alpha级别的方法,即df2 $ cluster + 1。

可重复使用ggplot的示例(颜色中的Alpha级别):

   library("dbscan")
   data("moons")
   cl <- hdbscan(moons, minPts = 5)
   plot(moons, col=cl$cluster+1, pch=21)
   colors <- mapply(function(col, i) adjustcolor(col, alpha.f = cl$membership_prob[i]), 
               palette()[cl$cluster+1], seq_along(cl$cluster))
   points(moons, col=colors, pch=20)

2 个答案:

答案 0 :(得分:1)

@Override
public int compareTo(image compareImg) {
    int compareMatches=((image)compareImg).getGoodMatches();      
    return compareMatches - this.goodMatches;
}

enter image description here

答案 1 :(得分:0)

阅读Jon Spring的答案后,我在ggplot中提供了不影响标签alpha的解决方案:

   library(ggplot2); 
   ggplot(df, aes_string("V1", "V2", color = "cluster+1")) + 
   geom_point(shape = 21, size = 4,fill = NA) +  #solid points with no fill
   geom_point(shape = 20, size = 3, aes_string(x="V1", y="V2", color="cluster+1", alpha = "a$V1")) #fill with alpha values