Matplotlib:使用存储在列表中的 x、y、z 值,数据未显示在热图中的两侧
Matplotlib: data not showing on the two sides in heatmap using x, y, z values stored in lists
我第一次尝试使用 Matplotlib 生成热图。我有每个 x、y 单元格的值 (z)。多亏了 this page,我想我已经接近得到我想要的结果了,但我的绘图没有显示所有数据。它缺少第 5 列和第 5 行。我错过了什么吗?
import matplotlib.pyplot as plt
import numpy as np
# x, y data
x = [1, 2, 3, 4, 5]
y = [1, 2, 3, 4, 5]
z = [
[100, 500, 10, 50, 100],
[200, 600, 100, 600, 200],
[300, 700, 50, 700, 300],
[200, 600, 100, 600, 200],
[600, 200, 10, 50, 600]
]
x, y = np.meshgrid(x, y)
z = np.array(z)
plt.pcolormesh(x, y, z, cmap = 'Blues')
plt.colorbar()
plt.show()
x 和 y 是分隔单元格(=正方形)的线的坐标,而不是它们的中心。
所以对于5*5的单元格,应该有6*6的x坐标和6*6的y坐标。
类似于:
x = [0 ,1, 2, 3, 4, 5]
y = [0 ,1, 2, 3, 4, 5]
如果你想让标签居中,这里有一个技巧:
x=[0.5,1.5,2.5,3.5,4.5,5.5]
y= x
z = [
[100, 500, 10, 50, 100],
[200, 600, 100, 600, 200],
[300, 700, 50, 700, 300],
[200, 600, 100, 600, 200],
[600, 200, 10, 50, 600]
]
x, y = np.meshgrid(x, y)
z = np.array(z)
plt.pcolormesh(x, y, z, cmap = 'Blues')
plt.xlim([0.5,5.5])
plt.ylim([0.5,5.5])
我第一次尝试使用 Matplotlib 生成热图。我有每个 x、y 单元格的值 (z)。多亏了 this page,我想我已经接近得到我想要的结果了,但我的绘图没有显示所有数据。它缺少第 5 列和第 5 行。我错过了什么吗?
import matplotlib.pyplot as plt
import numpy as np
# x, y data
x = [1, 2, 3, 4, 5]
y = [1, 2, 3, 4, 5]
z = [
[100, 500, 10, 50, 100],
[200, 600, 100, 600, 200],
[300, 700, 50, 700, 300],
[200, 600, 100, 600, 200],
[600, 200, 10, 50, 600]
]
x, y = np.meshgrid(x, y)
z = np.array(z)
plt.pcolormesh(x, y, z, cmap = 'Blues')
plt.colorbar()
plt.show()
x 和 y 是分隔单元格(=正方形)的线的坐标,而不是它们的中心。
所以对于5*5的单元格,应该有6*6的x坐标和6*6的y坐标。 类似于:
x = [0 ,1, 2, 3, 4, 5]
y = [0 ,1, 2, 3, 4, 5]
如果你想让标签居中,这里有一个技巧:
x=[0.5,1.5,2.5,3.5,4.5,5.5]
y= x
z = [
[100, 500, 10, 50, 100],
[200, 600, 100, 600, 200],
[300, 700, 50, 700, 300],
[200, 600, 100, 600, 200],
[600, 200, 10, 50, 600]
]
x, y = np.meshgrid(x, y)
z = np.array(z)
plt.pcolormesh(x, y, z, cmap = 'Blues')
plt.xlim([0.5,5.5])
plt.ylim([0.5,5.5])