【发布时间】:2020-04-23 22:02:43
【问题描述】:
我需要轮廓 x, y , z 数据。下面是一个最小的工作示例:
x = [1, 2, 3, 4, 5]
y = [2, 4, 6, 8, 10]
z = [20, 40, 60, 80, 100]
因此,z = 20 在坐标 (1, 2) 处,z = 40 在坐标 (2, 4) 处,依此类推。实际上,我在空间中的每个点都有带有土壤电导率值的经度和纬度坐标。
我想使用 plt.contour() 或类似的东西来绘制轮廓。但是,z 必须是二维数组。我对python相当流利。但是,我并不完全掌握如何创建网格。
我见过的每一个等高线例子,z都是由x和y的函数计算出来的。
这是我在社区的第一个问题,如果我的问题需要更彻底,请告知。
我尝试过的事情: enter image description here 在此输入代码
这会引发一个错误,即 z 必须是二维数组。
当我尝试使用:z = np.reshape(z, (-1, 2) 时,x 的形状不同。其他人也使用过网格划分技术?
如何使 z 成为一个二维数组以进行轮廓绘制?我应该重塑所有数据吗?
【问题讨论】:
-
如果Z数据是二维数组,则可以调用
plt.contour而不需要X和Y。X和Y要么是二维的,形状与Z相同,要么是一维的, 以适应 Z 的 2 个方向中的每一个。使用您的数据对其进行测试,并以官方文档作为参考。 -
您好,感谢您的回复。我已将我的问题更新为更具体。我只是不知道使 z 成为二维数组的正确方法。
-
如果您知道维度,您可以使用 numpy 将一维数组转换为二维:
Z = np.array(Z).reshape(n,m)。 -
感谢 JohanC。我已经尝试了你所建议的一个版本,然后它说 x 和 y 与 z 的形状不同。我会试试你的建议。
标签: python matplotlib