gpt4 book ai didi

python - 从 python 中的 {x,y,z}-散点数据绘制 3D 表面

转载 作者:太空狗 更新时间:2023-10-29 17:19:02 25 4
gpt4 key购买 nike

我正在尝试绘制一个 3D 表面,该表面构造为适合 python 中的一些 {x,y,z} 点——理想情况下类似于 Mathematica ListSurfacePlot3D功能。到目前为止,我已经在我的观点上尝试了 plot_surfaceplot_wireframe 无济于事。

只有轴用 plot_surface 渲染。 plot_wireframe 给出了一堆波浪线,模糊地呈现出对象的形状,但不是文档中显示的那种漂亮的类型: enter image description hereListSurfacePlot3D 的结果进行比较: enter image description here

这是一个最小的工作示例,使用我发布的 test.csv 文件 here :

import csv
from matplotlib import pyplot
import pylab
from mpl_toolkits.mplot3d import Axes3D

hFile = open("test.csv", 'r')
datfile = csv.reader(hFile)
dat = []

for row in datfile:
dat.append(map(float,row))

temp = zip(*(dat))

fig = pylab.figure(figsize=pyplot.figaspect(.96))
ax = Axes3D(fig)

那么,要么

ax.plot_surface(temp[0], temp[1], temp[2])
pyplot.show()

ax.plot_wireframe(temp[0], temp[1], temp[2])
pyplot.show()

这是使用 plot_surface 呈现的方式: enter image description here并使用 plot_wireframe: enter image description here并使用 ListSurfacePlot3D: enter image description here

最佳答案

plot_surface 需要二维数组形式的 X、Y、Z 值,这将由 np.meshgrid 返回。当输入以这种方式定期网格化时,绘图函数隐含地知道表面中的哪些顶点彼此相邻,因此应该与边连接。但是,在您的示例中,您要将一维坐标向量传递给它,因此绘图函数需要能够确定应该连接哪些顶点。

plot_trisurf 函数通过执行 Delaunay 三角剖分来确定哪些点应该与边连接以避免“细三角形”,从而处理不规则间隔的点:

enter image description here

关于python - 从 python 中的 {x,y,z}-散点数据绘制 3D 表面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17367558/

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