pyplot.contourf

时间:2017-11-24 03:22:40

标签: python matplotlib 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')

enter image description here

黑色轮廓是用于检查的0值线 我们可以发现contourf中的零值缺失。 有谁知道在contourf中发生了什么?

或此问题的任何建议在级别上有不同的间距?

非常感谢

1 个答案:

答案 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()

enter image description here

或者您拍摄的色彩图具有更连续的级别,其余部分保持不变。

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()

enter image description here