我有以下列表:
x_list = [7,10,3,9,9]
y_list = [2,5,1,3,2]
z_list = [4,1,5,2,3]
对于每个x
值和y
值,都有一个z
值。例如:x=7
和y=2
的z
值为4
。
我想将其转换为矩阵,如下所示:
…为了能够创建具有正确的x轴和y轴以及颜色条的矩阵图(此处缺少颜色条,最好将零值设置为黑色):
这在Excel中相当简单,但我在python中却遇到了困难,因为我是matplotlib的新手。
编辑
我可能会使用plt.imshow()来绘制图
发布于 2019-11-12 17:02:01
NumPy的unique
和meshgrid
函数是你在这里的朋友,他们可以根据你的坐标设置适当的网格。然后,您只需要在生成的X
和Y
中找到与您的坐标相对应的适当索引。最后,在一些与X
和Y
维度相同的全零Z
矩阵中,可以将刚找到的索引处的元素设置为原始z
数据。
下面是一些代码:
import numpy as np
x = np.array([7, 10, 3, 9, 9])
y = np.array([2, 5, 1, 3, 2])
z = np.array([4, 1, 5, 2, 3])
# Calculate X, Y grid from x and y, initialize Z data with zero
X, Y = np.meshgrid(np.unique(x), np.unique(y))
Z = np.zeros(X.shape)
# Find proper indices in grid, and set Z values accordingly
idx = np.squeeze([np.argwhere(np.logical_and(X == x[idx], Y == y[idx])) for idx in np.int32(np.arange(x.size))])
Z[idx[:, 0], idx[:, 1]] = z
print(Z)
并且,输出是:
[[5. 0. 0. 0.]
[0. 4. 3. 0.]
[0. 0. 2. 0.]
[0. 0. 0. 1.]]
关于绘图:我想不出Matplotlib函数来创建类似于所示的绘图。所以,也许可以给出一个额外的提示,你想要的是哪个函数。
希望这能有所帮助!
https://stackoverflow.com/questions/58814462
复制相似问题