如何使用Matplotlib制作简单的3D线?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何使用Matplotlib制作简单的3D线?相关的知识,希望对你有一定的参考价值。

我想生成线条,这是我从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:第三个arg必须是格式字符串

答案

我想,你想绘制4条线。然后你可以试试

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]])

正如@Nicolas建议的那样,看看matplotlib画廊。

另一答案

该画廊是一个很好的起点,可以找到例子:

http://matplotlib.org/gallery.html

这里有一个3d线图的例子:

http://matplotlib.org/examples/mplot3d/lines3d_demo.html

你看到你需要传递给ax.plot函数3向量。您实际上正在传递列表列表。我不知道您的开始和结束子列表的含义,但以下行应该有效:

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

在这里,我总结子列表(串联),以便按轴只有一个列表。

以上是关于如何使用Matplotlib制作简单的3D线?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 matplotlib 中制作 3D 散点图

如何在 matplotlib 中制作无衬线上标或下标文本?

matplotlib 3d曲面图未显示[重复]

在 matplotlib 中为旋转的 3D 图形制作动画

Python 和 Matplotlib:在 Jupyter Notebook 中制作交互式 3D 绘图

使用 seaborn 向 matplotlib 图添加次要网格线