我用9x11点绘制了contourf
图。当我绘制contourf
图时,我希望看到数据点之间的线(因为数据点之间没有其他数据)。但是例如在0.9级中存在一些不是线性的部分(尤其是在x = 2和x = 4之间)。可能是什么原因?
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()
答案 0 :(得分:1)
答案 1 :(得分:1)
以下情节可能有助于更好地理解轮廓图。
这里我们绘制一个3x3点的数组轮廓。中间点(6
)的值远大于其他值。我们选择了3
和5
的等级来绘制轮廓线。这些线由轮廓计算以插入数据
然后使用更多的点将允许使用更多的线条并使它们看起来更平滑。
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()