所以我画了一个等高线,我的颜色条有一个假值。数据严格在0到1之间。为什么会显示1.05?我怎么才能把最高的数字变成1.00呢?
import numpy as np
import matplotlib.pyplot as plt
x = np.linspace(1,10, 100)
z = np.random.uniform(0, 1, 100**2).reshape((100, 100))
plt.contourf(x, x, z, cmap=plt.cm.coolwarm, vmin=0., vmax=1.)
cbar = plt.colorbar()
print(cbar.get_clim()) # (0.0, 1.0)
发布于 2018-06-07 04:06:35
绘制等高线时,contourf
函数会自动选择它认为最合适的水平值,为每个数据点分配一种颜色。这有点类似于将数据放入直方图中。颜色栏中的每个分段都反映这些级别中的一个。
在这种情况下,它选择创建7个级别,matplotlib正在努力(出于我承认我不明白的原因)来适应颜色栏。
您可以通过指定contourf
函数应使用的级别数并选择一个能为您提供更可接受的色带的值来解决此问题(您可能不希望低于自动选择的级别数):
plt.contourf(x, x, z, 10, cmap=plt.cm.coolwarm)
plt.colorbar()
或者,如果你真的想让contourf
来做这个决定,你可以调整色条上的刻度:
plt.contourf(x, x, z, cmap=plt.cm.coolwarm)
plt.colorbar(ticks=np.linspace(0, 1, 5))
https://stackoverflow.com/questions/50727450
复制相似问题