gpt4 book ai didi

python - Matplotlib - 使用 for 循环绘制 3D 图形

转载 作者:太空宇宙 更新时间:2023-11-03 16:50:45 24 4
gpt4 key购买 nike

我想用 matplotlib 绘制几个 3D 点。我的坐标存储在 2D 数组中,因为我有多个案例,所以我想使用“for 循环”在同一个 3D 图中绘制所有案例,但当我这样做时,结果出现在不同的图上...

例如:

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

X = np.array([[3,2,1],[4,5,6]])
Y = np.array([[1,2,1],[2,3,4]])
Z = np.array([[10,11,12],[13,12,16]])

for i in range(0,X.shape[0]):

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

ax.scatter(X[i,:], Y[i,:], Z[i,:], c='r', marker='o')

ax.set_xlabel('Z')
ax.set_ylabel('X')
ax.set_zlabel('Y')

plt.show()

最佳答案

您在每次迭代中创建一个新图形并在每次迭代中绘制它。此外,您始终创建 1x1 子图网格的第一个子图。

您可能需要一个 x.shape[0] x 1 网格或 1 x x.shape[0] 网格:

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

X = np.array([[3,2,1],[4,5,6]])
Y = np.array([[1,2,1],[2,3,4]])
Z = np.array([[10,11,12],[13,12,16]])

# Create figure outside the loop
fig = plt.figure()

for i in range(0,X.shape[0]):

# Add the i+1 subplot of the x.shape[0] x 1 grid
ax = fig.add_subplot(X.shape[0], 1, i+1, projection='3d')

ax.scatter(X[i,:], Y[i,:], Z[i,:], c='r', marker='o')

ax.set_xlabel('Z')
ax.set_ylabel('X')
ax.set_zlabel('Y')
# Show it outside the loop
plt.show()
<小时/>

编辑:

如果您想将它们全部绘制到同一个图中,请使用:

fig = plt.figure()
ax = fig.add_subplot(1, 1, 1, projection='3d')
ax.set_xlabel('Z')
ax.set_ylabel('X')
ax.set_zlabel('Y')

for i in range(0,X.shape[0]):
# Only do the scatter inside the loop
ax.scatter(X[i,:], Y[i,:], Z[i,:], c='r', marker='o')

plt.show()

关于python - Matplotlib - 使用 for 循环绘制 3D 图形,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35864649/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com