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数组,以便可以手动添加和规范化它们。
3条答案
按热度按时间nfs0ujit1#
正如@ImportanceOfBeingErnest在评论中建议的那样,下限似乎是
1/255
。我没有时间看源代码,但我确实测试了它,并假设发生了什么,输入的
alpha
值需要表示为0到255之间的int:当输入的
alpha
值小于1/255
时,例如1/256
,则用0
表示,曲线消失,而当alpha
为1/255
(或稍大)时,则转换为1
,曲线可见。fzsnzjdm2#
我的猜测也是
1./255
,这样最大8位RGB颜色乘以alpha仍然对图像做出非零贡献。然而,这也只允许用完全饱和的颜色绘制线条,实际上这是不正确的。更改中的相关值
我发现这个限制实际上是510(也就是说,最小alpha是
1./510
),这也适用于非饱和色(例如“小麦”),所以实际情况显然比上面描述的天真假设要复杂得多,我的matplotlib版本是3.4.2
。我还没有进一步研究这个问题--对于大量的重叠图像,无论如何都必须想出一种不同的方法。有一个相关的ticket on github建议使用
mplcairo
。另一个选项是将输出图像导出为numpy
数组,以便可以手动添加和规范化它们。mrphzbgm3#
没有下限;这些线对于非常小的α值看起来是不可见的。
如果你画一条alpha=0.01的线,颜色的差别对于你的屏幕/眼睛来说太小了。如果你画100条alpha =0.01的线,你会看到它们。
至于您的问题,您可以只向每个绘制调用的alpha值添加一个小数字,这样alpha〈0.1的线仍然会出现。