Matplotlib contourf 没有反映带边界的 ListedColormap

Matplotlib contourf is not reflecting ListedColormap with boundaries

是否可以将带有边界的自定义颜色条应用于图形?例如contourf

因为我可以更改 colorbar 的边界,但是 contourf 没有反映这些边界。

colors = ["#ffffff", "#FFD8CA", "#FFAB98", "#FF7765", "#FF3E33", "#FF0000"]
cmap = matplotlib.colors.ListedColormap(colors)

m = plt.cm.ScalarMappable(cmap=cmap)
m.set_array(zi)
m.set_clim(min(z), max(z))
plt.colorbar(m, boundaries=[min(z), 0.35, 0.7, 1.05, 1.4, min(z)])
plt.contourf(xi, yi, zi, 6, cmap=cmap,alpha=0.7, vmin=min(z), vmax=max(z))

如果你有 6 个边界值,你需要 5 种颜色。
边界是轮廓的 levels。通过 levels 参数指定。 然后colorbar会自动正确

import numpy as np
import matplotlib.pyplot as plt
import matplotlib.colors

x,y = np.meshgrid(np.linspace(-3,3), np.linspace(-3,3))
z = np.exp(-x**2-y**2)*1.5+0.2

colors = ["white", "mistyrose", "lightcoral", "firebrick", "black"]
cmap= matplotlib.colors.ListedColormap(colors)
boundaries=[z.min(), 0.35, 0.7, 1.05, 1.4, z.max()]

m = plt.contourf(x, y, z, levels = boundaries, cmap=cmap)

plt.colorbar(m, spacing="proportional")
plt.show()