如何在Python中制作3D散点图?

时间:2009-12-31 15:37:07

标签: python 3d matplotlib plot scatter-plot

我目前有一个nx3矩阵阵列。我想将三列绘制为三个轴。 我怎样才能做到这一点?

我用Google搜索,人们建议使用 Matlab ,但我真的很难理解它。我也需要它是散点图。

有人可以教我吗?

5 个答案:

答案 0 :(得分:114)

您可以使用matplotlib。 matplotlib有一个mplot3d模块,可以完全按照您的需要进行操作。

from matplotlib import pyplot
from mpl_toolkits.mplot3d import Axes3D
import random


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

sequence_containing_x_vals = list(range(0, 100))
sequence_containing_y_vals = list(range(0, 100))
sequence_containing_z_vals = list(range(0, 100))

random.shuffle(sequence_containing_x_vals)
random.shuffle(sequence_containing_y_vals)
random.shuffle(sequence_containing_z_vals)

ax.scatter(sequence_containing_x_vals, sequence_containing_y_vals, sequence_containing_z_vals)
pyplot.show()

上面的代码生成如下图:

matplotlib 3D image

答案 1 :(得分:2)

使用以下代码对我有用:

# Create the figure
   fig = plt.figure()
   ax = fig.add_subplot(111, projection='3d')

   # Generate the values
   x_vals = X_iso[:, 0:1]
   y_vals = X_iso[:, 1:2]
   z_vals = X_iso[:, 2:3]

   # Plot the values
   ax.scatter(x_vals, y_vals, z_vals, c = 'b', marker='o')
   ax.set_xlabel('X-axis')
   ax.set_ylabel('Y-axis')
   ax.set_zlabel('Z-axis')

   plt.show()

当X_iso是我的3-D数组时,对于X_vals,Y_vals,Z_vals我从该数组复制/使用了1个列/轴,并分别分配给这些变量/数组。

答案 2 :(得分:2)

from mpl_toolkits import mplot3d
import numpy as np
import matplotlib.pyplot as plt
fig = plt.figure()
ax = plt.axes(projection='3d')
ax = plt.axes(projection='3d')

散点图

zdata = 15 * np.random.random(100)
xdata = np.sin(zdata) + 0.1 * np.random.randn(100)
ydata = np.cos(zdata) + 0.1 * np.random.randn(100)
ax.scatter3D(xdata, ydata, zdata);

enter image description here

Colab notebook

答案 3 :(得分:1)

改为使用渐近线!

这就是它的样子:

http://asymptote.sourceforge.net/gallery/3D%20graphs/helix.pdf

这是代码: http://asymptote.sourceforge.net/gallery/3D%20graphs/helix.asy

Asymptote也可以读入数据文件。

完整的画廊: http://asymptote.sourceforge.net/gallery/

在Python中使用渐近线:

http://www.tex.ac.uk/tex-archive/graphics/asymptote/base/asymptote.py

答案 4 :(得分:-4)

from enthought.mayavi import mlab

Mayavi是一种简单,交互式数据可视化工具,可与Python科学库无缝集成。

more details about Mayavi