我有一个3元组的列表,表示3D空间中的一组点.我想绘制一个覆盖所有这些点的表面.mplot3d包中的plot_surface函数需要作为参数X,Y和Z,它们是2d数组.plot_surface是绘制曲面的正确函数吗?如何将数据转换为所需格式?
data = [(x1,y1,z1),(x2,y2,z2),.....,(xn,yn,zn)]
我目前正在使用 python 处理应变数据,并使用 matplotlib (v. 1.5.1) 为有限应变椭球体创建各种图形输出。
处理 1000 个椭球体参数非常快(我正在重用此处提供的一些可爱的 python 代码https://github.com/minillinim/ellipsoid/blob/master/ellipsoid.py),但我的工作流程中的瓶颈与在 3D 绘图中绘制大量 3D 对象所需的时间。
下面我附上了一小段 Python 代码,用于计算和绘制一堆随机椭球体。虽然“ellipNumber”很小,但它的作用就像一个魅力。但是,当它达到 100 时,需要更长的时间.. 到了 1000 秒,我敢打赌你将没有耐心等待。
在 2D 中,我知道使用集合是提高性能的方法:如何快速绘制数千个圆圈?
假设集合确实是可行的方法,我四处寻找一个示例,并尝试使用椭圆体坐标填充 Poly3DCollection,就像他们在 3D 中对多边形所做的那样: Plotting 3D Polygons in python-matplotlib,但我没有成功设置基于 2d x、y 和 z 数组的顶点。
任何有关如何提高椭球体绘图性能的建议/评论将不胜感激!
干杯
import numpy as np
from numpy import linalg
from mpl_toolkits.mplot3d import Axes3D
import matplotlib.pyplot as plt
from matplotlib import cm
import matplotlib.colors as colors
fig = plt.figure(figsize=(8,8))
ax = fig.add_subplot(111, projection='3d')
# number …Run Code Online (Sandbox Code Playgroud) 我正在尝试学习如何使用 matplotlib 和 numpy 为我的一个班级绘制方程组。我们没有得到太多指导,我不太擅长编程,我真的不明白如何做到这一点,尽管我认为它不太复杂。基本上,我有一个这样的方程组:
4x -2y + z =11
-2x +4y -2z = -16
x -2y + 4z = 17
Run Code Online (Sandbox Code Playgroud)
如何使用 matplotlib 绘制每个方程的图形?
谢谢!
编辑:说明还说要使用 mplot3d。编辑:解决方案:如何从 Python 中的一组线性方程绘制平面?
在我以某种方式获得3D多边形实际绘图的过程中,我遇到了以下脚本(编辑:稍微修改):在python-matplotlib中绘制3D多边形
from mpl_toolkits.mplot3d import Axes3D
from matplotlib.collections import Poly3DCollection
import matplotlib.pyplot as plt
fig = plt.figure()
ax = Axes3D(fig)
x = [0,1,1,0]
y = [0,0,1,1]
z = [0,1,0,1]
verts = [zip(x, y,z)]
ax.add_collection3d(Poly3DCollection(verts),zs=z)
plt.show()
Run Code Online (Sandbox Code Playgroud)
但是当我运行它时,我收到以下错误消息:
TypeError: object of type 'zip' has no len()
Run Code Online (Sandbox Code Playgroud)
看起来这可能是Python 2对3的事情,因为我在Python 3中运行,而且该帖子已有五年了.所以我将第三行到最后一行改为:
verts = list(zip(x, y, z))
Run Code Online (Sandbox Code Playgroud)
现在verts显示在变量列表中,但我仍然收到错误:
TypeError: zip argument #1 must support iteration
Run Code Online (Sandbox Code Playgroud)
什么?我该如何解决?
给定一个如下所示的列表:
triangels = [
((1,1,1),(2,2,2),(1,3,4)),
((2,3,4),(9,9,9),(3,4,5)),
]
Run Code Online (Sandbox Code Playgroud)
使用 pyplot 在 3D 中绘制两个三角形的最快方法是什么?我没有找到任何方法可以做到这一点,有一个 2D 实现。
谢谢你!
这不是重复的,因为我询问如何将给定列表转换为三角形,我没有要求输入已经被操纵的解决方案。