Python 3.x 以最小/最大值强制颜色条勾号

Python 3.x 以最小/最大值强制颜色条勾号,python-3.x,matplotlib,colorbar,contourf,Python 3.x,Matplotlib,Colorbar,Contourf,我正在使用matplotlib中的tourtf功能进行绘图,并想添加一个色条,我注意到有时刻度不符合最大/最小值 有没有一种干净的方法来强制它在这些值上设置刻度 注意:检查z的max和min显示颜色条表示大约从-1到1的值,因此我希望能够反映这一点,以便人们可以看到颜色条的范围,以及其间的一些记号 演示我所说内容的情节和代码 导入matplotlib.pyplot作为plt 将numpy作为np导入 #要绘制的数据。 x、 y=np.meshgrid(np.arange(7),np.arang

我正在使用
matplotlib
中的
tourtf
功能进行绘图,并想添加一个色条,我注意到有时刻度不符合最大/最小值

有没有一种干净的方法来强制它在这些值上设置刻度

注意:检查
z
max
min
显示颜色条表示大约从-1到1的值,因此我希望能够反映这一点,以便人们可以看到颜色条的范围,以及其间的一些记号

演示我所说内容的情节和代码

导入matplotlib.pyplot作为plt
将numpy作为np导入
#要绘制的数据。
x、 y=np.meshgrid(np.arange(7),np.arange(10))
z=np.sin(0.5*x)*np.cos(0.52*y)
图,ax=plt.子批次()
cs=最大轮廓f(x,y,z,标高=25)
轴网格(c=“k”,ls=“-”,alpha=0.3)
图颜色条(cs,ax=ax)
图savefig(“example.png”,bbox_inches=“tight”)

最干净的方法似乎是为
contourf
提供明确的级别。如果没有给出明确的级别,
tourtf
似乎会根据数据中的最小值和最大值选择自己的级别,并试图找到“好看”的数字。在此之后,滴答声被设置为这些数字的一个子集,这样滴答声总是与真实水平重合。(如果使用
colorbar(…,ticks=…)
这些ticks不一定与级别一致。)

由于正弦和余弦在给定示例中未精确达到
-1
1
,因此它们不在范围内

下面的代码显示了刻度如何取决于所选的级别。使用
np.linspace(-1,1,24)
级别不是很好的整数,但是matplotlib仍然选择要显示的子集

导入matplotlib.pyplot作为plt
将numpy作为np导入
x、 y=np.meshgrid(np.arange(7),np.arange(10))
z=np.sin(0.5*x)*np.cos(0.52*y)
图(ax1,ax2)=plt.子批次(ncols=2,figsize=(12,3))
对于ax-in(ax1、ax2):
如果ax==ax1,则numcontours=25,否则为24
cs=ax.contourf(x,y,z,levels=np.linspace(-1,1,numcontours))
轴网格(c=“k”,ls=“-”,alpha=0.3)
图颜色条(cs,ax=ax)
ax.set_title(f'{numcontours}级别从-1到1')
plt.show()

当我说-1和1时,最大值实际上是0.997。。。。所以我把它四舍五入到1。我的评论是关于试图弄清楚matplotlib在幕后做了什么。这不是对你的评论的评论…啊,好吧,我误解了,所以颜色条没有扩展到最小/最大值的原因是因为它们不“好”?似乎很难确定什么是“好”以及找到足够接近的“好”值的最佳方法。