Matplotlib:使用一维数组在笛卡尔坐标系上绘制 3D 数据 (Python)

Matplotlib: Plotting of 3D data on a Cartesian coordinate system, with 1D Arrays (Python)

大家下午好,

我正在尝试使用矿物勘探计划中的钻探数据创建地表高程等高线图。我是编程新手,欢迎任何反馈!

每个钻孔有一个:

  1. 洞号
  2. x 坐标(东坐标)
  3. y 坐标(北向)
  4. z 值(表面高程)。

数据摘录如下:

方法论

我将工作分为两个步骤。

1) 检查数据绘制在正确的区域

我使用 pandas 从 csv 文件中提取每个钻孔的坐标,并使用 matplotlib 中的 plt.scatter 绘制数据。

这是我的输出。到目前为止一切正常,所以现在我想绘制 3D(z 轴)数据。

2)绘制Surface_Elevation(z轴)

这是我遇到问题的地方。我已经阅读了几个依赖于 plt.contour 的 matplotlib 等高线指南。问题是这个函数需要一个二维数组,而我想要绘制轮廓的数据是一维的。我在这里遗漏了什么吗?

我的尝试

import matplotlib.pyplot as plt  # plot data
import pandas as pd  # extract data from csv

# access csv and assign as a variable
dataset = pd.read_csv('spreadsheet.csv')

# x_axis values extracted and converted to a list from the csv
x_axis = list(dataset["Orig_East"])

# y_axis values extracted and converted to a list from the csv
y_axis = list(dataset["Orig_North"])

# z_axis values extracted and converted to a list from the csv
z_axis = list(dataset["Surface_Elevation"])


plt.contour(x_axis, y_axis, z_axis, colors='black');
plt.ticklabel_format(useOffset=False, style='plain')  # remove exponential axis labels
plt.xlabel('Easting')  # label x axis
plt.ylabel('Northing')  # label y axis
plt.title('Surface Elevation') # label plot

# plot graph
plt.show()

一种可能的解决方案是将每个点的高程编码为散点标记的颜色。这可以通过调用 plt.scatter(x, y, c=z) 来完成 你也可以指定一个想要的cmap,见documentation.