[英]unequal interval level in pyplot.contourf
我使用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值线,我们可以发现轮廓f中的零值丢失。 有谁知道contourf发生了什么?
或对此问题有不同级别的建议?
非常感谢你
问题是"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()
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.