所以我想要一个2D直方图或热图。我有数据作为网格遵循格式(x,y,value)如[(0,0,5),(0,1,7),(0,2,8),...]。我只想画一个网格,其中每个方块有一个颜色对应的值,每个网格点的位置是由x,y坐标。
gk7wooem1#
链接的问题很有趣,但是如果我正确理解OP,在这种情况下数据确实形成了一个完整的矩形网格,所以不需要插入任何值。假设数据元组按照x和y值排序,如示例所示,您可以很容易地将它们重新编码为二维数组。这对于图像数据更常见,并且可以传递到plt.imshow()。
x
y
plt.imshow()
import numpy as np import matplotlib.pyplot as plt grid = [(0, 0, 5), (0, 1, 7), (0, 2, 8), (1, 0, 6), (1, 1, 8), (1, 2, 8), (2, 0, 7), (2, 1, 9), (2, 2, 9), (3, 0, 8), (3, 1, 8), (3, 2, 9)] x, y, z = zip(*grid) a = np.array(z).reshape((max(x) + 1, max(y) + 1)) plt.imshow(a, cmap='Blues')
1条答案
按热度按时间gk7wooem1#
链接的问题很有趣,但是如果我正确理解OP,在这种情况下数据确实形成了一个完整的矩形网格,所以不需要插入任何值。假设数据元组按照
x
和y
值排序,如示例所示,您可以很容易地将它们重新编码为二维数组。这对于图像数据更常见,并且可以传递到plt.imshow()
。