从.dat文件绘制3列数据的图表

3

我有一个包含三列数据的.dat文件,希望用matplotlib/python绘制出它们的图形。我刚接触python,.dat文件是使用Fortran 90创建的。下面是filename.dat文件的一部分内容。

0.0 0.1 0.85
1.0 0.3 0.62
2.0 0.5 0.27
3.0 0.7 0.34
4.0 0.9 0.19

以下是我编写的(不正确)用于在3D中绘制数据的Python代码。

import numpy as np
import matplotlib.pyplot as plot
from mpl_toolkits.mplot3d import Axes3D

3Dplot.plot(*np.loadtxt("filename.dat",unpack=True), linewidth=2.0) #invalid syntax, why?
3Dplot.show()

GNUplot命令的等价物是什么?

splot 'filename.dat' using 1:2:3

在Python中如何绘制3D图表?这正是我想要做的事情。

但是,当我运行.py文件时,会出现“invalid syntax”错误消息,我不确定为什么,但是这是以3D开头的行。我该如何绘制3D数据?如果我有一个只有两列的.dat文件,我就可以做到这一点,但当我进入三维空间时,我不知道该怎么做。谢谢!


什么是错误? - efirvida
@efirvida刚刚将其添加到帖子中,因为您提出了问题,错误是“语法无效”。谢谢。 - Jeff Faraci
2
@Integrals:SyntaxError的原因是因为标识符(如3Dplot不能以数字开头 - unutbu
@unutbu 谢谢,我很感激! - Jeff Faraci
1个回答

5
您在错误使用 Axes3D 对象,所以您看到了 SyntaxError
请尝试以下操作:
import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D

fig = plt.figure()
ax = Axes3D(fig)

# Unpack file data.
dat_file = np.loadtxt("filename.dat", unpack=True)

# Plot data.
ax.scatter(*dat_file, linewidth=2.0)
plt.show()

enter image description here


1
非常好,非常感谢你指出无效语法错误的原因。 - Jeff Faraci
有没有简单的方法可以将另一个.dat文件添加到这个代码中?这样我就可以在同一张图上绘制两个.dat文件了?每个.dat文件都有3列,所以我只是想把2个图形放在同一张图上。我尝试了很多方法,但是无法弄清楚。在GNU plot中,它只是splot 'filename1.dat','filename2.dat'。所以我在这里尝试了很多类似的东西,但是无法弄清楚。谢谢!如果您建议,我很乐意将其作为另一个问题发布。对不起打扰您了。 - Jeff Faraci
1
只需使用另一行 dat_file2 = np.loadtxt() 读取新的 .dat 文件,然后使用新的 ax.scatter(*dat_file2) 行绘制即可。 - Gabriel
1
好的,这也很快就解决了。我没有添加另一行用于ax.scatter绘图,我试图像在GNU中那样只用一个来完成所有操作。非常感谢。 - Jeff Faraci

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接