>  기사  >  백엔드 개발  >  Matplotlib를 사용하여 분산된 데이터에서 부드러운 3D 표면을 만드는 방법은 무엇입니까?

Matplotlib를 사용하여 분산된 데이터에서 부드러운 3D 표면을 만드는 방법은 무엇입니까?

Barbara Streisand
Barbara Streisand원래의
2024-10-26 07:11:02127검색

How to Create Smooth 3D Surfaces from Scattered Data Using Matplotlib?

Matplotlib로 표면 플롯 생성

3D 공간에서 점을 나타내는 3-튜플 목록을 고려하여 이러한 점을 덮는 표면을 생성하는 작업입니다.

mplot3d 패키지의plot_surface를 사용하려면 X, Y, Z에 대한 2D 배열 형태의 입력 데이터가 필요합니다. 주어진 데이터 구조를 변환하려면 몇 가지 고려해야 할 사항이 있습니다.

표면의 경우 선 플롯과 달리 2D 배열을 사용하여 도메인을 덮는 그리드를 정의해야 합니다. 3D 점 목록만 사용하여 작업할 때는 삼각측량이 필수적입니다. 이는 주어진 포인트 클라우드에 대해 여러 가지 가능한 삼각측량이 있기 때문입니다.

매끄러운 표면을 위해 다음 접근 방식을 취할 수 있습니다.

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

def fun(x, y):
    return x**2 + y

fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
x = y = np.arange(-3.0, 3.0, 0.05)
X, Y = np.meshgrid(x, y)
zs = np.array(fun(np.ravel(X), np.ravel(Y)))
Z = zs.reshape(X.shape)

ax.plot_surface(X, Y, Z)

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

plt.show()</code>

이 코드는 meshgrid를 사용하여 그리드를 정의하고, 해당 Z 값을 사용하고,plot_surface를 사용하여 표면 플롯을 생성합니다. 결과 표면은 기본 데이터를 매끄럽게 표현합니다.

위 내용은 Matplotlib를 사용하여 분산된 데이터에서 부드러운 3D 표면을 만드는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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