Python 如何使matplotlib/pcolor显示数据的最后一行和最后一列

Python 如何使matplotlib/pcolor显示数据的最后一行和最后一列,python,matplotlib,heatmap,Python,Matplotlib,Heatmap,matplotlib/pcolor删除最后一行和最后一列数据。建议将x和y参数的维数增加1,应该可以解决这个问题。现在考虑下面的简单例子: x = np.array([1,2]) y = np.array([1,2]) z = np.array([[10,20],[30,40]]) # Using pcolor fig, ax = plt.subplots() p = ax.pcolor(x,y,z,vmin=z.min(), vmax=z.max()) ax.set_xlim([x.min(

matplotlib/pcolor删除最后一行和最后一列数据。建议将x和y参数的维数增加1,应该可以解决这个问题。现在考虑下面的简单例子:

x = np.array([1,2])
y = np.array([1,2])
z = np.array([[10,20],[30,40]])

# Using pcolor
fig, ax = plt.subplots()
p = ax.pcolor(x,y,z,vmin=z.min(), vmax=z.max())
ax.set_xlim([x.min(),x.max()])
ax.set_ylim([y.min(),y.max()])
cb = fig.colorbar(p, ax=ax)

# Using matshow (for comparison)
fig, ax = plt.subplots()
ms = ax.matshow(z,vmin=z.min(), vmax=z.max(), origin = 'lower')
ax.xaxis.tick_bottom()
cb = fig.colorbar(ms, ax=ax)
将x和y的尺寸增加一个,例如,将其更改为:

x = np.array([1,2,2.1])
y = np.array([1,2,2.1])
这并不能解决问题。如何使pcolor绘图与matshow绘图相似?

尝试以下方法:

import numpy as np
from matplotlib import pyplot as plt

x = np.array([1,2,3])
y = np.array([1,2,3])
z = np.array([[10,20],[30,40]])

# Using pcolor
fig, ax = plt.subplots()
p = ax.pcolor(x,y,z,vmin=z.min(), vmax=z.max())
ax.set_xlim([x.min(),x.max()])
ax.set_ylim([y.min(),y.max()])
cb = fig.colorbar(p, ax=ax)
plt.show()
编辑:


这看起来不错,但问题是它显示x和y的范围是1到3,而实际的x和y是1和2,这可能会产生误导。有没有办法把蜱和蜱标签(1和2)放在每个矩形的中间?你必须修改轴和蜱,见编辑在我的答案。结果情节正是我所寻找的。然而,在这里,您已经操纵了原始的x和y,使其适用于这个特定的示例。是否有更通用的配方适用于任何x和y(即,获取原始的x和y,然后以这样的方式修改它们,使图形看起来像您在这个特定示例中所做的)?更一般的程序将考虑到x和y的输入可能并非总是均匀分布。
x = np.array([0.5,1.5,2.5])
y = np.array([0.5,1.5,2.5])
z = np.array([[10,20],[30,40]])

# Using pcolor
fig, ax = plt.subplots()
p = ax.pcolor(x,y,z,vmin=z.min(), vmax=z.max())
ax.set_xticks([1., 2.])
ax.set_yticks([1., 2.])
cb = fig.colorbar(p, ax=ax)
plt.show()