matplotlib 两个不同pcolormesh图的色图和范围相同

hxzsmxv2  于 2023-10-24  发布在  其他
关注(0)|答案(1)|浏览(163)

我有一个pcolormesh图(图1)和一个相应的颜色条,显示数据范围(0到100)。现在为了说明我的问题,我将数据除以2,并显示第二个pcolormesh图(图2),数据范围在0到50之间。
我想要的是:

图2应该使用与图1相同的颜色条和范围。它不应该在0和50之间缩放完整的颜色条值,而是应该使用与第一个图的数据相一致的颜色(50应该在图2中颜色条的一半)。因此,图2中的所有颜色应该在黑色和绿色之间!

下面是我的代码:

import numpy as np
import matplotlib.pyplot as plt

nx, ny = 10, 20
nz = nx*ny

minx, maxx = -5, 5
miny, maxy = -10, 10
minz, maxz = 0, 100

np.random.seed(1)

x = np.linspace(minx, maxx, nx)
y = np.linspace(miny, maxy, ny)
z1 = np.linspace(minz, maxz, nz)

np.random.shuffle(z1)
z2 = z1/2

z1=z1.reshape(ny,nx)
z2=z2.reshape(ny,nx)

图1

fig1, ax1 = plt.subplots(1,figsize=(5,5))

plot1=ax1.pcolormesh(x,y,z1,cmap='nipy_spectral',shading='auto')

ax1.set_xlabel('x')
ax1.set_ylabel('y')

cb1=fig1.colorbar(plot1,ax=ax1)

图2(颜色条应从0到100,最大值应为绿色)

fig2, ax2 = plt.subplots(1,figsize=(5,5))

plot2=ax2.pcolormesh(x,y,z2,cmap='nipy_spectral',shading='auto')

ax2.set_xlabel('x')
ax2.set_ylabel('y')

cb2=fig2.colorbar(plot2,ax=ax2)

nom7f22z

nom7f22z1#

您可以将颜色条限制更改为第一个颜色条的限制。

cb2.mappable.set_clim(*cb1.mappable.get_clim())

相关问题