Matplotlib: pcolor() 不绘制最后一行和最后一列?
·
问题:Matplotlib: pcolor() 不绘制最后一行和最后一列?
似乎 PCOLOR 正在切断我的数据集的最后一行和一列。打印下面的zi
的形状就知道了(22,22)
,正如我所料,但显示的面积为 21 平方乘 21 平方...知道为什么最后一行和最后一列没有被绘制?
def pcolor_probs(x,y,z, x_str, y_str, t_str):
xi = np.arange(min(x),max(x)+1, 1)
yi = np.arange(min(y),max(y)+1, 1)
zi = griddata(x,y,z,xi,yi)
print np.shape(xi),np.shape(yi),np.shape(zi)
# fix NANs
zi = np.asarray(zi)
for i in range(len(zi)):
for j in range(len(zi[i])):
print i,j
if isnan(float(zi[i][j])):
zi[i][j] = 0
# plot
f = figure()
ax = f.add_subplot(111)
pc_plot = ax.pcolor(zi, cmap = cm.coolwarm, shading = 'faceted', alpha = 0.75)
# pc_plot = ax.contourf(zi, 20, cmap = cm.coolwarm, alpha = 0.75)
ax.set_xticks(np.arange(zi.shape[0])+0.5, minor=False)
ax.set_yticks(np.arange(zi.shape[1])+0.5, minor=False)
ax.set_xticklabels(np.arange(len(xi)))
ax.set_yticklabels(np.arange(len(yi)))
ax.set_xlim(min(x), max(x))
ax.set_ylim(min(y), max(y))
ax.set_xlabel(x_str)
ax.set_ylabel(y_str)
ax.set_title(t_str)
f.colorbar(pc_plot)
f.set_tight_layout(True)
font = {'family' : 'serif','weight' : 'regular','size' : 12}
matplotlib.rc('font', **font)
show()
让我们变得更简单,
X = np.random.rand(10,10)
pcolor(X)
show()
生产,
解答
原因是 pcolor 计算顶点上的点。事实上,有 22 个和 10 个顶点。请改用imshow(...,extent[])
。
更多推荐
所有评论(0)