Matplotlib:两个不同 pcolormesh 图的相同颜色图和范围

时间:2021-05-09 00:05:07

标签: python matplotlib colorbar

我有一个 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)

enter image description here

PLOT 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)

enter image description here

1 个答案:

答案 0 :(得分:1)

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

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

enter image description here