我希望使用pcolormesh叠加不同颜色的区域。掩码区域确实不会显示出来,但它们会覆盖其他互补区域。下面是一个例子,我首先单独绘制两个区域(因此掩码工作得很好),但然后我想将它们叠加,但第二个区域覆盖了第一个区域。如何获得不同区域颜色不同的图形?
#!/usr/bin/env python
import numpy as np
import matplotlib.pyplot as plt
xi=np.linspace(0,10,100)
yi=np.linspace(0,10,150)
x=0.5*(xi[1:]+xi[:-1])
y=0.5*(yi[1:]+yi[:-1])
X,Y=np.meshgrid(x,y)
Z = np.exp(-(X-5)**2-(Y-5)**2)
Z1 = Z.copy()
Z1[(X+Y)<10]=np.nan
Z2 = Z.copy()
Z2[(X+Y)>=10]=np.nan
plt.figure(figsize=(4,12),tight_layout=True)
plt.subplot(3,1,1)
plt.pcolormesh(x,y,Z1,cmap='Greens',vmin=0,vmax=Z.max())
plt.subplot(3,1,2)
plt.pcolormesh(x,y,Z2,cmap='Blues',vmin=0,vmax=Z.max())
plt.subplot(3,1,3)
plt.pcolormesh(x,y,Z1,cmap='Greens',vmin=0,vmax=Z.max())
plt.pcolormesh(x,y,Z2,cmap='Blues',vmin=0,vmax=Z.max())
编辑:
我应该补充说明,如果我使用contourf
而不是pcolormesh
,整个过程都很好,但是它们之间会有一个难看的空白区域,如下所示。备选问题:在使用contourf
时如何去掉那个区域?