matplotlib 如何绘制一个2D直方图/热图,其中我给予了x和y坐标,然后该位置的值用颜色表示?

0yg35tkg  于 2023-02-13  发布在  其他
关注(0)|答案(1)|浏览(91)

所以我想要一个2D直方图或热图。我有数据作为网格遵循格式(x,y,value)如[(0,0,5),(0,1,7),(0,2,8),...]。我只想画一个网格,其中每个方块有一个颜色对应的值,每个网格点的位置是由x,y坐标。

gk7wooem

gk7wooem1#

链接的问题很有趣,但是如果我正确理解OP,在这种情况下数据确实形成了一个完整的矩形网格,所以不需要插入任何值。假设数据元组按照xy值排序,如示例所示,您可以很容易地将它们重新编码为二维数组。这对于图像数据更常见,并且可以传递到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')

相关问题