我有两个向量,x和y:
x = [0,1,2,3,4]
y = [0,1,2,3]
我有一个长度为(x*y)的向量z,例如
[5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24]
矢量z中的值对应于坐标[(0,0),(0,1), (0,2),(0,3),(1,0), (1,1)...(4,3)]
我想要一个图,我可以在指定的x,y坐标处从z绘制一个点。
所以我想在坐标(0,0)处的值为5。在(0,1)处的值为6,等等。
我该怎么做?我在网上看到过很多这样的例子,都是用plt.imshow
或者热图来做的,但没有一个是我可以画散点图/线的。
3条答案
按热度按时间zpgglvta1#
您可以使用numpy meshgrid和maplotlib pcolormesh函数来完成此操作。
我们的想法是
X
和Y
包含2D中的坐标,因此在索引[i, j]
处,x坐标由X[i, k]
给出,y坐标也是如此。最后,Z
只是z
的整形版本,在numpy数组中。最后,如果你想要一个3D图,你可以使用matplotlib中的plot_surface函数。
olmpazwi2#
在我看来,你正在寻找的是一个点云图。它是一个图,顾名思义,你产生一个坐标为(x,y,z)的点云。然而,大多数图形库称之为scatter3d。
在matplotlib中你可以用途:https://matplotlib.org/stable/gallery/mplot3d/scatter3d.html
您可能还需要重新构造数组以扩展x和y数组,以便在x[i],y[i]和z[i]之间建立一对一的对应关系。请考虑使用numpy的repeat和tile函数来执行此操作。
jmp7cifd3#
改编Noé Duruz的解决方案以使用散射: