首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >将X、Y、Z值转换为矩阵图

将X、Y、Z值转换为矩阵图
EN

Stack Overflow用户
提问于 2019-11-12 16:11:09
回答 1查看 49关注 0票数 1

我有以下列表:

代码语言:javascript
运行
复制
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=7y=2z值为4

我想将其转换为矩阵,如下所示:

…为了能够创建具有正确的x轴和y轴以及颜色条的矩阵图(此处缺少颜色条,最好将零值设置为黑色):

这在Excel中相当简单,但我在python中却遇到了困难,因为我是matplotlib的新手。

编辑

我可能会使用plt.imshow()来绘制图

EN

回答 1

Stack Overflow用户

发布于 2019-11-12 17:02:01

NumPy的uniquemeshgrid函数是你在这里的朋友,他们可以根据你的坐标设置适当的网格。然后,您只需要在生成的XY中找到与您的坐标相对应的适当索引。最后,在一些与XY维度相同的全零Z矩阵中,可以将刚找到的索引处的元素设置为原始z数据。

下面是一些代码:

代码语言:javascript
运行
复制
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)

并且,输出是:

代码语言:javascript
运行
复制
[[5. 0. 0. 0.]
 [0. 4. 3. 0.]
 [0. 0. 2. 0.]
 [0. 0. 0. 1.]]

关于绘图:我想不出Matplotlib函数来创建类似于所示的绘图。所以,也许可以给出一个额外的提示,你想要的是哪个函数。

希望这能有所帮助!

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58814462

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档