使用Matplotlib或Octave在文本文件中绘制3d点

时间:2011-09-01 19:35:17

标签: matplotlib octave

嗨我有一个包含三列数字的文本文件;每列一列用于一堆点的x,y,z坐标。所有数字都在0和1之间。

我想在单位立方体[0,1] x [0,1] x [0,1]中绘制所有这些点。

请告诉我如何在Octave或MatPlot lib中执行此操作,无论哪个产生更高质量的图像。

1 个答案:

答案 0 :(得分:3)

如果我理解你的问题,这就是它在Matplotlib中的样子:

3D scatter plot

这是产生这个情节的代码:

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

np.random.seed(101)
x,y,z = np.random.rand(3,20)

fig = plt.figure()
# version 1.0.x syntax:
#ax = fig.add_subplot(111, projection='3d')
# version 0.99.x syntax: (accepted by 1.0.x as well)
ax = Axes3D(fig)

ax.scatter(x,y,z)

fig.savefig('scatter3d.png')

正如代码所示,matplotlib版本0.99.1.1和版本1.0.1的行为方式略有不同,如SO question/answer所述。我使用的是0.99.1.1,而且我无法使用2D scatter图中可用的所有选项,对于3D图也应该是相同的。列出了分散功能的完整列表here

上面的代码来自于3D绘图上的matplotlib tutorial