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()
是否可以将带有边界的自定义颜色条应用于图形?例如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()