两个不同的 pcolormesh 图具有相同的颜色图和范围

问题描述 投票:0回答:1

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

python matplotlib colorbar
1个回答
3
投票

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

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

© www.soinside.com 2019 - 2024. All rights reserved.