Python-使用alpha通道将子地块中的2个绘图与matplotlib叠加

Python-使用alpha通道将子地块中的2个绘图与matplotlib叠加,python,matplotlib,plot,alpha,Python,Matplotlib,Plot,Alpha,我想使用“alpha通道”在一个图中叠加两个图。 我试着在左图上得到右图的轮廓: 我的代码是: plt.close() fig, axes = plt.subplots(nrows=1, ncols=3) plt.tight_layout(pad=0.05, w_pad=0.001, h_pad=2.0) ax1 = plt.subplot(131) # creates first axis ax1.set_xticks([0,2000,500,1000,1500]) ax1.set_yt

我想使用“alpha通道”在一个图中叠加两个图。 我试着在左图上得到右图的轮廓:

我的代码是:

plt.close()

fig, axes = plt.subplots(nrows=1, ncols=3)

plt.tight_layout(pad=0.05, w_pad=0.001, h_pad=2.0)
ax1 = plt.subplot(131) # creates first axis
ax1.set_xticks([0,2000,500,1000,1500])
ax1.set_yticks([0,2000,500,1000,1500])
ax1.tick_params(labelsize=8) 
i1 = ax1.imshow(U,cmap='hot',extent=(X.min(),2000,Y.min(),2000), vmin=U.min(), vmax=U.max())
cb1=plt.colorbar(i1,ax=ax1,ticks=[U.min(),(U.min()+U.max())/2., U.max()],fraction=0.046, pad=0.04,format='%.2f')
cb1.ax.tick_params(labelsize=8)

ax1.set_title("$ \mathrm{Ux_{mes} \/ (pix)}$", y=1.05, fontsize=12)
ax2 = plt.subplot(132) # creates second axis
ax2.set_xticks([0,2000,500,1000,1500])
ax2.set_yticks([0,2000,500,1000,1500])
i2=ax2.imshow(UU,cmap='hot',extent=(X.min(),2000,Y.min(),2000), vmin=U.min(), vmax=U.max())
ax2.set_title("$\mathrm{Ux_{cal} \/ (pix)}$", y=1.05, fontsize=12)
ax2.set_xticklabels([])
ax2.set_yticklabels([])
cb2=plt.colorbar(i2,ax=ax2,fraction=0.046, pad=0.04,ticks=[U.min(),(U.min()+U.max())/2.,U.max()],format='%.2f')
cb2.ax.tick_params(labelsize=8)

ax3 = plt.subplot(133) # creates first axis
ax3.set_xticks([0,2000,500,1000,1500])
ax3.set_yticks([0,2000,500,1000,1500])
i3 = ax3.imshow(resU,cmap='hot',extent=(X.min(),2000,Y.min(),2000))
ax3.set_title("$\mathrm{\mid Ux_{mes} - Ux_{cal} \mid \/ (pix)}$ ", y=1.05, fontsize=12)
cb3=plt.colorbar(i3,ax=ax3,fraction=0.046, pad=0.04,ticks=[resU.min(), (resU.min()+resU.max())/2.,resU.max()],format='%.2f')
ax3.set_xticklabels([])
ax3.set_yticklabels([])
cb3.ax.tick_params(labelsize=8)
plt.gcf().tight_layout()

plt.show()
我使用下面的命令获取轮廓并添加它:

[masquey,masquey] = np.gradient(masquey)
plt.imshow(masquey2,cmap='hot',alpha=0.1)
但是它不起作用。。。我明白了:


对我来说,你想要什么并不清楚,但这里有一个叠加
imshow
图的例子

fig, axes = plt.subplots(nrows=1, ncols=3)
rand1=np.random.random((2000,500))
ax1 = plt.subplot(131) 
ax1.imshow(rand1)
box=np.zeros_like(rand1)
box[100:400,100:400]=1
ax1.imshow(box,cmap='Greys',alpha=0.6)

也许您需要确保选择了正确的子批次

e、 g


如果我了解您想要什么,那么如果您只是重复使用ax1而不是使用ax3,它应该可以工作。例如,使用ax1.imshow(resU,cmap='hot',extent=(X.min(),2000,Y.min(),2000))是的,我只需要第三个绘图的轮廓就可以叠加在上面…我想我应该使用alpha通道,但不起作用…在参数末尾添加“alpha=0.5”有什么作用吗?什么是“不起作用”?如果您遵循这里的建议,这将对我们有所帮助:谢谢您的帮助!这正是我试图做的,但当我这样做时,我得到了正确的颜色条(因此似乎是可以的),但字段是相当统一的…不理解错误…没关系,我忘记了“范围”术语,这就是为什么它是统一的…)谢谢;)
ax3 = plt.subplot(131) for your third plot.