mplot3d (python) 为什么在 3d 坐标中绘制一条线需要展平方法
mplot3d (python) why plotting a line in 3d the coordinates need the metod flatten
我开始学习 python 和相关的图形库。
在获得一些 2D 经验后,我开始使用 3D。
我想做的是在 3D 中绘制一个圆圈。
我报告一个最小的例子
import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
fig = plt.figure(figsize=plt.figaspect(1)) # only solution to define axis aspect equal
ax = fig.add_subplot((111), projection='3d')
t = np.linspace(0, np.pi * 2, 360, endpoint=True)
x = np.cos(t)
y = np.sin(t)
z = zeros((1, len(x)))
ax.plot(x.flatten(), y.flatten(), z.flatten(), color='red')
plt.show()
问题是:为什么如果我只使用 x
、y
、z
(不使用 flatten
),我会得到如下错误:
input operand has more dimensions than allowed by the axis remapping?
谢谢
你的问题是 z
的形状。当它应该是 (N,)
时,您将其定义为 (1,N)
。
使用 z = np.zeros(shape=t.shape)
,您将不再需要展平数组
我开始学习 python 和相关的图形库。 在获得一些 2D 经验后,我开始使用 3D。 我想做的是在 3D 中绘制一个圆圈。 我报告一个最小的例子
import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
fig = plt.figure(figsize=plt.figaspect(1)) # only solution to define axis aspect equal
ax = fig.add_subplot((111), projection='3d')
t = np.linspace(0, np.pi * 2, 360, endpoint=True)
x = np.cos(t)
y = np.sin(t)
z = zeros((1, len(x)))
ax.plot(x.flatten(), y.flatten(), z.flatten(), color='red')
plt.show()
问题是:为什么如果我只使用 x
、y
、z
(不使用 flatten
),我会得到如下错误:
input operand has more dimensions than allowed by the axis remapping?
谢谢
你的问题是 z
的形状。当它应该是 (N,)
时,您将其定义为 (1,N)
。
使用 z = np.zeros(shape=t.shape)
,您将不再需要展平数组