我制作了这个颜色条,但现在我不能将它应用到我的等高线图上

I made this colorbar but now I can't apply it to my contour plot

我做了这个彩条:

import matplotlib.pyplot as plt
import matplotlib as mpl

fig, ax = plt.subplots(figsize=(6, 1))
fig.subplots_adjust(bottom=0.5)

cmap = mpl.cm.viridis
norm = mpl.colors.Normalize(vmin=0, vmax=1)

cb1 = mpl.colorbar.ColorbarBase(ax, cmap=cmap,
                                norm=norm,
                                orientation='horizontal')
cb1.set_label('Some Units')
fig.show()

但我正在尝试使用 plt.contourf 将此颜色条应用于此随机变量的颜色图(我需要对我的实际数据集使用 plt.contourf,所以我不能使用 plt.imshow . 我知道 plt.imshow 做正确的颜色图,但在这种情况下,我不能使用 plt.imshow).

data = np.random.rand(100,200,144)

x = plt.contourf(data[-1],cmap=cmap,norm=norm)
plt.colorbar(x)
plt.show()

为什么颜色条不是从 0 - 1 而是间隔从 0 - 1.05?如何复制创建的颜色条 (cb1) 以将其应用于数据?

plt.contourf() 似乎进行了一些舍入以使其级别具有“不错”的值。您可以明确设置级别,例如 levels=np.linspace(0, 1, 11) 以获得 10 区域(11 区域边缘)。

import numpy as np
import matplotlib as mpl

cmap = mpl.cm.viridis
norm = mpl.colors.Normalize(vmin=0, vmax=1)

data = np.random.rand(100, 200, 144)
cntr = plt.contourf(data[-1], cmap=cmap, norm=norm, levels=np.linspace(0, 1, 11))
plt.colorbar(cntr)
plt.show()