我的代码:
import numpy as np import matplotlib.pyplot as plt from matplotlib import colors x = y = np.linspace(0, 10, 51) X, Y = np.meshgrid(x, y) Z = X+Y # Z.min() => 0, Z.max() => 20 cf = plt.contourf(X, Y, Z, levels=[5, 10, 15], norm=colors.BoundaryNorm([5, 10, 15], 256, extend='both')) cb = plt.colorbar(cf, extend='both') plt.show()
其输出:
我的期望:
我的问题是:
我做错了什么?
正如@JohanC所指出的,colorbar用轮廓做一些奇怪的事情。然而,在这种简单的情况下,为什么要使用BoundaryNorm?
import numpy as np import matplotlib.pyplot as plt from matplotlib import colors x = y = np.linspace(0, 10, 51) X, Y = np.meshgrid(x, y) Z = X+Y # Z.min() => 0, Z.max() => 20 cf = plt.contourf(X, Y, Z, levels=[5, 10, 15], extend='both') cb = plt.colorbar(cf, extend='both') plt.show()
做你想做的事。