ggplot alpha级别在点的填充和边界上显示不同

con*_*nor 6 transparency visualization alpha r ggplot2

我正在使用ggplot为所有点绘制具有恒定透明度值的许多点.

我发现圆形点的填充比其单独的边界更加透明,因此边界明显比填充更明亮(我在黑暗的背景上绘制光圈).

效果是它们看起来像戒指而不是半透明圆圈.

library(ggplot2)
set.seed(123)
data <- data.frame( x = sample(1:100,2000, replace=T), 
                    y = sample(1:100,2000, replace=T) )
ggplot(data, aes(x,y)) + 
  geom_point(alpha=0.2, color="dodgerblue", fill="dodgerblue", size=4) +
  theme(panel.background = element_rect(fill = 'black', colour = 'black'))
Run Code Online (Sandbox Code Playgroud)

我不确定为什么会这样做,所以关于为什么会发生这种情况的信息会很棒.

可能的解决方案是使边框和填充相同的透明度,或使边框100%透明(设置边框,比如背景颜色,当点重叠时会破坏视觉效果).我不知道怎么做其中任何一个.

*以下讨论后添加了编辑*

在RStudio查看器中查看绘图或保存的PNG时会出现此问题.查看已保存的PDF时不会显示.然而,我的真实数据集很大,矢量图形在绘制大量点时效率低,所以我想要一个替代解决方案!

Tom*_*ers 8

鉴于您想要具有恒定颜色和不透明度的磁盘,最简单的方法是为我修复它,同样在 RStudio 绘图预览窗口中只需使用选项shape=16

data <- data.frame( x = sample(1:100,2000, replace=T), 
                y = sample(1:100,2000, replace=T) )
ggplot(d, aes(x,y)) + 
  geom_point(alpha=0.2, color="dodgerblue", size=5, shape=16) +
  theme(panel.background = element_rect(fill = 'black', colour = 'black'))
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明

或者,shape=21100% 半透明填充 fill=adjustcolor("dodgerblue",alpha.f=0)也适用:

ggplot(data, aes(x,y)) + 
     geom_point(alpha=0.2, fill=adjustcolor("dodgerblue",alpha.f=0), size=5, shape=21) +
     theme(panel.background = element_rect(fill = 'black', colour = 'black'))
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明

stroke=0按照当前接受的答案中的建议使用似乎并不能完全解决我的问题(振铃效应会稍微消失但不完全消失,这至少在 Windows 上):

ggplot(data, aes(x,y)) + 
    geom_point(alpha=0.2, colour="dodgerblue", fill="dodgerblue", stroke=0,  size=5) +
    theme(panel.background = element_rect(fill = 'black', colour = 'black'))
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明


42-*_*42- 5

将行程更改为 0 似乎达到了预期的结果:

ggplot(data, aes(x,y)) + 
  geom_point(alpha=0.2, colour="dodgerblue", fill=mycol, stroke=0,  size=5) +
  theme(panel.background = element_rect(fill = 'black', colour = 'black'))
Run Code Online (Sandbox Code Playgroud)