Python colorbar不应用vmin和vmax

Python colorbar不应用vmin和vmax,python,matplotlib,plot,Python,Matplotlib,Plot,我有以下奇怪的行为:当我限制图形的范围时,彩色图仍然显示它: import matplotlib.pyplot as plt import numpy as np fig, ax = plt.subplots() x = np.linspace(0,1,100) X,Y = np.meshgrid(x,x,indexing="ij") im = ax.contourf(X,Y,X**2-Y**2, 100, vmin = 0, vmax = 0.5) plt.colorbar(im, ax

我有以下奇怪的行为:当我限制图形的范围时,彩色图仍然显示它:

import matplotlib.pyplot as plt
import numpy as np
fig, ax = plt.subplots()

x = np.linspace(0,1,100)
X,Y = np.meshgrid(x,x,indexing="ij")

im = ax.contourf(X,Y,X**2-Y**2, 100, vmin = 0, vmax = 0.5)

plt.colorbar(im, ax=ax)

plt.show()


如何正确配置颜色条的限制?

ax.contourf()中的100表示您需要在轮廓中设置100个级别。在绘图本身中,确实有超过0.5的值

您可以自定义颜色栏标记的范围

import matplotlib.pyplot as plt
import numpy as np
fig, ax = plt.subplots()
cbarticks = np.arange(0.0,0.55,0.05)
x = np.linspace(0,1,100)
X,Y = np.meshgrid(x,x,indexing="ij")

im = ax.contourf(X,Y,X**2-Y**2, cbarticks, vmin = 0, vmax = 0.5)

plt.colorbar(im, ax=ax,ticks=cbarticks)

plt.show()
这会给你


不确定这是否正是您想要的,但我有一个类似的问题,并在这里自己回答:

ax.contourf()中的100表示您想要轮廓中的100个级别。在绘图本身中,确实有超过0.5的值

您可以自定义颜色栏标记的范围

import matplotlib.pyplot as plt
import numpy as np
fig, ax = plt.subplots()
cbarticks = np.arange(0.0,0.55,0.05)
x = np.linspace(0,1,100)
X,Y = np.meshgrid(x,x,indexing="ij")

im = ax.contourf(X,Y,X**2-Y**2, cbarticks, vmin = 0, vmax = 0.5)

plt.colorbar(im, ax=ax,ticks=cbarticks)

plt.show()
这会给你

不确定这是否正是您想要的,但我有一个类似的问题,并在这里自己回答: