【问题标题】:In python, how do I contour x, y, z data? [duplicate]在 python 中,我如何轮廓 x、y、z 数据? [复制]
【发布时间】: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


【解决方案1】:

您发布的内容不是算我们的情节;这是一条线上的几个点。您的描述确实暗示z 是一个二维数组:对于X x Y 中的每一对,您都有一个Z 值。

只需按照您已经找到的示例进行操作,或查看matplotlib documentation。在他们计算 Z 值的地方,您只需硬编码或读取二维 z 数组。将其提供给绘图功能;该函数不关心你从哪里获得值,只关心你提供它们。

【讨论】:

  • 还有tricontour,当数据不在网格上时。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-09-14
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多