如何解决Matplotlib:使用一维数组在笛卡尔坐标系上绘制3D数据Python
下午好,
我正在尝试通过使用矿物勘探计划中的钻探数据来创建表面高程的轮廓图。我是编程新手,欢迎任何反馈!
每个钻孔都有一个:
- 孔编号
- x坐标(东)
- y坐标(向北)
- z值(表面标高)。
数据摘录如下:
方法
我把工作分为两步。
1)检查数据是否在正确的区域内绘制
我使用pandas
从csv文件中提取每个钻孔的坐标,并使用plt.scatter
中的matplotlib
绘制了数据。
这是我的输出。到目前为止,它仍然有效,所以现在我想绘制3D(z轴)数据。
2)绘制Surface_Elevation(z轴)
这是我遇到问题的地方。我已经阅读了一些依赖plt.contour
的matplotlib轮廓指南。问题在于此函数需要2D数组,而我要绘制轮廓的数据是1D。我在这里想念东西吗?
我的尝试
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。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。