如何将matplotlib 3.3.4版本散点图中的所有点设置为完全不透明?
问题原因
matplotlib从3.3.2版本开始调整了极小尺寸标记的抗锯齿渲染逻辑,默认开启的抗锯齿会让s参数小于1的散点自动叠加半透明效果,即便是显式指定alpha=1.0也会因为渲染逻辑出现类似密度图的叠加效果。
可用解决方案(均无需回退版本)
- 方案1:单独关闭当前散点的抗锯齿,在
plt.scatter参数中添加antialiased=False即可,示例代码:
该方案对matplotlib 3.3.4版本完全生效,可直接得到所有点完全不透明的散点图。plt.scatter(y[:,0], y[:,1], c='r', s=0.01, alpha=1.0, antialiased=False) - 方案2:如果需要保留抗锯齿效果,可关闭散点的默认描边,添加
linewidths=0参数,示例代码:plt.scatter(y[:,0], y[:,1], c='r', s=0.01, alpha=1.0, linewidths=0) - 方案3:全局关闭散点的默认描边,在代码最开头添加配置:
配置后所有散点默认无描边,也能解决小尺寸点的半透明问题。import matplotlib.pyplot as plt plt.rcParams['scatter.edgecolors'] = 'none'
内容的提问来源于stack exchange,提问作者ponir
相关产品推荐
相关产品推荐

