为什么Contourf图中的数据点之间没有线?

时间:2017-04-28 08:58:41

标签: python matplotlib contourf

我用9x11点绘制了contourf图。当我绘制contourf图时,我希望看到数据点之间的线(因为数据点之间没有其他数据)。但是例如在0.9级中存在一些不是线性的部分(尤其是在x = 2和x = 4之间)。可能是什么原因?

Contourf plot

plt.figure()
x=np.linspace(0,10,11)
y=np.linspace(0,10,11)
X,Y = np.meshgrid(x,y)
levels = np.arange(0,1.01,0.1)
norm = cm.colors.Normalize(vmax=1, vmin=0)
cmap = cm.PRGn

CS1 = plt.contourf(X, Y, data,levels=levels,cmap=cm.get_cmap(cmap, 
        len(levels) - 1),norm=norm)
plt.xticks(np.arange(11),np.arange(11))
plt.yticks(np.arange(11),np.arange(250,855,55))
plt.xlim([0,8])
plt.colorbar(CS1)
plt.grid()
plt.show()

2 个答案:

答案 0 :(得分:1)

它应该是这样的:行之间区域的contourf颜色和contour绘制线条。请参阅examples

答案 1 :(得分:1)

以下情节可能有助于更好地理解轮廓图。

enter image description here

这里我们绘制一个3x3点的数组轮廓。中间点(6)的值远大于其他值。我们选择了35的等级来绘制轮廓线。这些线由轮廓计算以插入数据 然后使用更多的点将允许使用更多的线条并使它们看起来更平滑。

import matplotlib.pyplot as plt
import numpy as np

X,Y = np.meshgrid(np.arange(3), np.arange(3))
Z = np.array([[1,1,1],[2,6,2],[1,1,1]])

fig, ax=plt.subplots()
cs = ax.contour(X,Y,Z, levels=[3,5])
cs2 = ax.contourf(X,Y,Z, levels=[1,3,5,6], alpha=0.3)
plt.clabel(cs, cs.levels, inline=False)
plt.colorbar(cs2)
ax.scatter(X,Y)
for x,y,z in zip(X.flatten(), Y.flatten(), Z.flatten()):
    ax.text(x,y,z)

plt.show()