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

use*_*037 71 python 3d plot matplotlib scatter-plot

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

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

有人可以教我吗?

Chi*_*chi 129

你可以使用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()
Run Code Online (Sandbox Code Playgroud)

上面的代码生成如下图:

matplotlib 3D图像

  • 好的解决方案 请注意,`plt.zlabel('zlabel')`不会工作.要标记z轴,您需要使用:`ax.set_zlabel('Z')`. (4认同)
  • 而不是 from matplotlib.pyplot 应该是 import matplotlib.pyplot (2认同)

Sae*_*lah 12

使用以下代码对我有用:

# 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()
Run Code Online (Sandbox Code Playgroud)

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


Ama*_*cha 7

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

散点图

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);
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

Colab笔记本