>  기사  >  백엔드 개발  >  Matplotlib의 3D 점 목록에서 표면을 그리는 방법은 무엇입니까?

Matplotlib의 3D 점 목록에서 표면을 그리는 방법은 무엇입니까?

DDD
DDD원래의
2024-10-26 06:37:03565검색

How to Plot a Surface from a List of 3D Points in Matplotlib?

Matplotlib의 표면 플로팅

공간 데이터 작업 시 표면 생성은 귀중한 통찰력을 제공할 수 있습니다. Matplotlib에서는 이러한 목적으로plot_surface 함수가 활용됩니다. 그러나 2D 배열 형식의 입력이 필요하므로 3D 점을 나타내는 3-튜플 목록과 호환되지 않습니다.

데이터 변환

표면을 플롯하려면 3-튜플에서 데이터를 필요한 형식으로 변환해야 합니다. 주어진 데이터에는 기본 함수 f(x, y)가 없기 때문에 점을 삼각측량하여 곡면을 만들어야 합니다.

삼각측량 및 변환

삼각측량 프로세스의 경우 , [triangulate_points](https://matplotlib.org/stable/gallery/mplot3d/triangulation_demo.html) 함수를 사용할 수 있습니다. 제공된 점을 연결하는 삼각형 목록을 생성하여 효과적으로 표면 메시를 생성합니다.

삼각측량이 완료되면 X, Y 및 Z에 필요한 2D 배열을 얻을 수 있습니다. 이러한 배열은 정점의 좌표를 나타냅니다.

표면 플로팅

변환된 데이터를 사용하여 이제 플롯_표면을 호출할 수 있습니다.

<code class="python">import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d.art3d import Poly3DCollection

# List of 3-tuples representing points
data = [(x1, y1, z1), (x2, y2, z2), ...]

# Triangulate the points
triangles = triangulate_points(data)

# Extract 2D arrays for X, Y, and Z
X, Y, Z = zip(*triangles)

# Plot the surface
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
ax.plot_surface(X, Y, Z)

ax.set_xlabel('X Label')
ax.set_ylabel('Y Label')
ax.set_zlabel('Z Label')

plt.show()</code>

이 스크립트는 주어진 3D 포인트를 덮는 매끄러운 표면.

위 내용은 Matplotlib의 3D 점 목록에서 표면을 그리는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.