其他分享
首页 > 其他分享> > 使用变量在颜色图中设置Alpha不透明度

使用变量在颜色图中设置Alpha不透明度

作者:互联网

我想使用colormaps将2个输出变量(例如map1和map2)绘制为2个输入变量(例如x和y)的函数.为此,我想使用色标来表示map1,而map2则依赖于透明度标尺.但是,alpha选项不能将np.array作为参数,并且以下代码注定要失败.

fig=plt.figure(num=None, figsize=(21,12), dpi=80, facecolor='w', edgecolor='k')
ax1=plt.subplot(211)
im = ax1.pcolor(map1, cmap='Spectral_r', alpha=map2)
fig.colorbar(im)

有人会看到这样做的方法吗?我不想使用另一个重叠的色标,并且确实希望map2用透明功能表示,例如背景网格的可见性将告诉读者map2的幅度.

解决方法:

您可以使用pcolormesh进行此操作,然后为QuadMesh的面设置Alpha.例如:

import numpy as np
import matplotlib.pyplot as plt

fig,ax = plt.subplots(1)
ax.set_aspect('equal')

# The data array
m1 = np.random.rand(5,5)
# The alpha array. Normalize your map2 to the range 0,1
m2 = np.linspace(0,1,25).reshape(5,5) 

p = ax.pcolormesh(m1)
plt.savefig('myfig.png') # or fig.canvas.draw()

for i,j in zip(p.get_facecolors(),m2.flatten()):
    i[3] = j # Set the alpha value of the RGBA tuple using m2

plt.savefig('myfig.png')

注意:您似乎必须在pcolormesh命令之后保存图形(或plt.show()或fig.canvas.draw()),以生成p.get_facecolors数组;这就是为什么我两次保存数字.可能有一个更优雅的解决方案,但我想不到.这是输出;注意从左下角到右上角的alpha值增加:

enter image description here

标签:python,matplotlib,colormap
来源: https://codeday.me/bug/20191013/1909982.html