我制作了这个颜色条,但现在我不能将它应用到我的等高线图上
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()
我做了这个彩条:
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()