使用变量设置颜色图中的 alpha 不透明度
Use a variable to set alpha opacity in a colormap
我想绘制 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 用透明度函数表示,例如背景网格的可见性会告诉 reader 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
从左下角向右上角增加:
我想绘制 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 用透明度函数表示,例如背景网格的可见性会告诉 reader 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
从左下角向右上角增加: