读取csv文件并在pyplot mplot3d中绘图

问题描述

我有一个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()

输出: matplotlib graph

注释:

Run this code online

查看this,了解有关使用matplotlib进行3D绘图的更多信息

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...