Matplotlib:使用一维数组在笛卡尔坐标系上绘制 3D 数据 (Python)
Matplotlib: Plotting of 3D data on a Cartesian coordinate system, with 1D Arrays (Python)
大家下午好,
我正在尝试使用矿物勘探计划中的钻探数据创建地表高程等高线图。我是编程新手,欢迎任何反馈!
每个钻孔有一个:
- 洞号
- x 坐标(东坐标)
- y 坐标(北向)
- 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.
大家下午好,
我正在尝试使用矿物勘探计划中的钻探数据创建地表高程等高线图。我是编程新手,欢迎任何反馈!
每个钻孔有一个:
- 洞号
- x 坐标(东坐标)
- y 坐标(北向)
- 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.