pyplot.contourf 中的不等间隔水平
unequal interval level in pyplot.contourf
我用plt.contourf画图,想用不同间距的level:
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 发生了什么吗?
或者对于水平间距不同的这个问题有什么建议吗?
非常感谢
问题是 "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()
我用plt.contourf画图,想用不同间距的level:
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 发生了什么吗?
或者对于水平间距不同的这个问题有什么建议吗?
非常感谢
问题是 "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()