matplotlib中的最小有效alpha值是多少?

biswetbf  于 2022-11-15  发布在  其他
关注(0)|答案(3)|浏览(203)

我的一些图有几百万条线。我通过线的数量动态调整alpha的值,这样离群值或多或少地消失了,而最突出的特征看起来很清楚。但对于一些alpha的,线只是消失了。
在matplotlib中,线图的最小有效alpha值是多少?为什么有下限?

nfs0ujit

nfs0ujit1#

正如@ImportanceOfBeingErnest在评论中建议的那样,下限似乎是1/255
我没有时间看源代码,但我确实测试了它,并假设发生了什么,输入的alpha值需要表示为0到255之间的int:

int(alpha*255)

当输入的alpha值小于1/255时,例如1/256,则用0表示,曲线消失,而当alpha1/255(或稍大)时,则转换为1,曲线可见。

fzsnzjdm

fzsnzjdm2#

我的猜测也是1./255,这样最大8位RGB颜色乘以alpha仍然对图像做出非零贡献。然而,这也只允许用完全饱和的颜色绘制线条,实际上这是不正确的。
更改中的相关值

for i in range(1000):
    plt.plot((0, 100), (0, 100), alpha = 1/510, color = "g")

我发现这个限制实际上是510(也就是说,最小alpha是1./510),这也适用于非饱和色(例如“小麦”),所以实际情况显然比上面描述的天真假设要复杂得多,我的matplotlib版本是3.4.2
我还没有进一步研究这个问题--对于大量的重叠图像,无论如何都必须想出一种不同的方法。有一个相关的ticket on github建议使用mplcairo。另一个选项是将输出图像导出为numpy数组,以便可以手动添加和规范化它们。

mrphzbgm

mrphzbgm3#

没有下限;这些线对于非常小的α值看起来是不可见的。
如果你画一条alpha=0.01的线,颜色的差别对于你的屏幕/眼睛来说太小了。如果你画100条alpha =0.01的线,你会看到它们。
至于您的问题,您可以只向每个绘制调用的alpha值添加一个小数字,这样alpha〈0.1的线仍然会出现。

相关问题