我使用plt.contourf绘制图形,我想使用不同间距的水平:
import numpy as np
import matplotlib.pyplot as plt
data = np.random.rand(10,10)*70-32 # I want my data between +/-70
levels = [-32, -16,-8, -4, -2, 0, 2, 4, 8, 16, 32]
im = plt.contourf(data, levels)
im.set_cmap('Set1')
plt.colorbar()
plt.contour(data, levels=[0], colors='black')
黑色轮廓是用于检查的0值线 我们可以发现contourf中的零值缺失。 有谁知道在contourf中发生了什么?
或此问题的任何建议在级别上有不同的间距?
非常感谢
答案 0 :(得分:0)
问题是"Set1"
只有9种颜色。因此,如果您有更多级别,某些级别具有相同的颜色。您可以选择具有更多离散颜色的色彩映射,并使用您拥有的级别指定BoundaryNorm
。
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.colors
data = np.random.rand(10,10)*70-32
levels = [-32, -16,-8, -4, -2, 0, 2, 4, 8, 16, 32]
norm = matplotlib.colors.BoundaryNorm(levels,len(levels))
im = plt.contourf(data, levels, cmap="tab20c", norm=norm)
plt.colorbar(ticks=levels)
plt.contour(data, levels=[0], colors='black')
plt.show()
或者您拍摄的色彩图具有更连续的级别,其余部分保持不变。
import numpy as np
import matplotlib.pyplot as plt
data = np.random.rand(10,10)*70-32
levels = [-32, -16,-8, -4, -2, 0, 2, 4, 8, 16, 32]
im = plt.contourf(data, levels, cmap="magma")
plt.colorbar(ticks=levels)
plt.contour(data, levels=[0], colors='black')
plt.show()