首页 > 解决方案 > 避免 matplotlib 中的重叠不透明度

问题描述

如果我想绘制两条相互交叉的不透明线,你会在它们相交的区域得到一个不透明度更高的区域:

import matplotlib.pyplot as plt

plt.plot([-1, 1], [0, 0], 'k-', lw=10, alpha=0.5, zorder=1)
plt.plot([0, 0], [-1, 1], 'k-', lw=10, alpha=0.5, zorder=1)
plt.show()

在此处输入图像描述

有没有办法避免这种情况,并且交叉区域也具有与其余线条完全相同的颜色和不透明度?

标签: pythonmatplotlib

解决方案


我在使用 ax.axhspan / ax.axvspan 时遇到了同样的问题。

ax.axvspan(min(x), max(x), facecolor=colors_dict[levels[0]], alpha=0.5)   
ax.axhspan(min(y), max(y), facecolor=colors_dict[levels[0]], alpha=0.5)

对于我当前的用例,选择较浅的颜色并通过设置将区域移到后面就足够了'alpha=1''zorder =-10'

左:原始,右:伪解决方案
原始问题 伪解

但我担心,这不会是一个解决方案,因为我希望稍后需要与其他一些区域进行透明绘图。因此,正如上面@tom10 链接的帖子中提到的那样,一个实际的功能会很有用。


推荐阅读