matplotlib 如何制作3D线图?

b5buobof  于 2023-05-01  发布在  其他
关注(0)|答案(2)|浏览(438)

我想生成这些线,这些线是我从3D中的一个数组中得到的。
代码如下:

VecStart_x = [0,1,3,5]
VecStart_y = [2,2,5,5]
VecStart_z = [0,1,1,5]
VecEnd_x = [1,2,-1,6]
VecEnd_y = [3,1,-2,7]
VecEnd_z  =[1,0,4,9]

import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')

ax.plot([VecStart_x ,VecEnd_x],[VecStart_y,VecEnd_y],[VecStart_z,VecEnd_z])
plt.show()
Axes3D.plot()

我得到这个错误:
ValueError:第三个参数必须是格式字符串

3ks5zfa0

3ks5zfa01#

我想,你想画四条线。那你可以试试

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

for i in range(4):
    ax.plot([VecStart_x[i], VecEnd_x[i]], [VecStart_y[i],VecEnd_y[i]],zs=[VecStart_z[i],VecEnd_z[i]])

作为Nicolashas suggested,请查看matplotlib图库。

wqnecbli

wqnecbli2#

这个图库是一个很好的起点,可以找到一些例子:
http://matplotlib.org/gallery.html
这里有一个3D线图的例子:
http://matplotlib.org/examples/mplot3d/lines3d_demo.html
你看到你需要把球传给斧头。plot函数3向量。你实际上是在传递列表的列表。
我不知道Start和End子列表是什么意思,但下面这行应该可以工作:

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

ax.plot(VecStart_x + VecEnd_x, VecStart_y + VecEnd_y, VecStart_z +VecEnd_z)

这里,我对子列表求和(串联),以便只有一个轴列表。

相关问题