问题描述
我有一个csv文件,其z值的网格对应于x
中的[1,2,3,4]
和y
中的[1,3]
,像这样:
1.1,1.2,1.3
2.1,2.2,2.3
3.1,3.2,3.3
4.1,4.2,4.3
我想使用mplot3d制作3D散点图。读取文件并绘制3D图的正确方法是什么?
解决方法
我不确定我是否正确理解了您的问题,但是如果CSV文件的第一列包含x
坐标,第二列包含y
坐标,而第三列z
坐标是其实很容易。
假设您的CSV文件如下所示(标题很重要):
points.csv
x,y,z <- titles
1.1,1.2,1.3
2.1,2.2,2.3
3.1,3.2,3.3
4.1,4.2,4.3
现在,您可以使用pandas
一行读取文件:
points = pandas.read_csv('points.csv')
访问每一列也很容易:
points['x'].values #get the x coordinates
因此,您可以使用matplotlib绘制点:
完整代码:
from mpl_toolkits.mplot3d import Axes3D
import matplotlib.pyplot as plt
import pandas
points = pandas.read_csv('points.csv')
fig = plt.figure()
ax = fig.add_subplot(111,projection='3d')
x = points['x'].values
y = points['y'].values
z = points['z'].values
# x y z
# 1.1,1.3
# 2.1,2.3
# 3.1,3.3
# 4.1,4.3
ax.scatter(x,z,c='r',marker='o')
plt.show()
注释:
查看this,了解有关使用matplotlib进行3D绘图的更多信息