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

时间:2016-02-17 20:52:52

标签: python matplotlib heatmap

matplotlib / pcolor会删除最后一行和一列数据。 This post建议将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的尺寸增加1,例如,将它们更改为:

x = np.array([1,2,2.1])
y = np.array([1,2,2.1])

无法解决问题。如何使pcolor图看起来与matshow plot类似?

1 个答案:

答案 0 :(得分:0)

试试这个:

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