3D 표면 플롯에서 사용자 정의 힐셰이딩

Beginner

This tutorial is from open-source community. Access the source code

소개

이 랩에서는 Python Matplotlib 을 사용하여 3D 표면 플롯에서 사용자 정의 힐셰이딩 (hillshading) 을 사용하는 방법을 보여줍니다. 힐셰이딩은 3D 플롯에서 깊이와 릴리프 (relief) 의 인식을 향상시키기 위해 빛과 그림자를 사용하는 기법입니다. 힐셰이딩을 사용자 정의함으로써 시각적으로 더 매력적이고 유익한 플롯을 만들 수 있습니다.

VM 팁

VM 시작이 완료되면 왼쪽 상단을 클릭하여 Notebook 탭으로 전환하여 실습을 위해 Jupyter Notebook에 액세스하십시오.

때로는 Jupyter Notebook 이 로딩을 완료하는 데 몇 초 정도 기다려야 할 수 있습니다. Jupyter Notebook 의 제한으로 인해 작업의 유효성 검사는 자동화할 수 없습니다.

학습 중에 문제가 발생하면 언제든지 Labby 에게 문의하십시오. 세션 후 피드백을 제공해주시면 문제를 즉시 해결해 드리겠습니다.

데이터 로드 및 형식 지정

이 단계에서는 3D 표면 플롯에 사용할 데이터를 로드하고 형식 지정합니다. "jacksboro_fault_dem.npz"라는 샘플 데이터 세트를 사용합니다.

import matplotlib.pyplot as plt
import numpy as np
from matplotlib import cbook, cm
from matplotlib.colors import LightSource

## Load and format data
dem = cbook.get_sample_data('jacksboro_fault_dem.npz')
z = dem['elevation']
nrows, ncols = z.shape
x = np.linspace(dem['xmin'], dem['xmax'], ncols)
y = np.linspace(dem['ymin'], dem['ymax'], nrows)
x, y = np.meshgrid(x, y)

region = np.s_[5:50, 5:50]
x, y, z = x[region], y[region], z[region]

플롯 설정

이 단계에서는 3D 표면 플롯을 위한 플롯을 설정합니다. 힐셰이딩을 사용자 정의하기 위해 LightSource 객체를 사용합니다.

## Set up plot
fig, ax = plt.subplots(subplot_kw=dict(projection='3d'))

ls = LightSource(270, 45)
## To use a custom hillshading mode, override the built-in shading and pass
## in the rgb colors of the shaded surface calculated from "shade".
rgb = ls.shade(z, cmap=cm.gist_earth, vert_exag=0.1, blend_mode='soft')
surf = ax.plot_surface(x, y, z, rstride=1, cstride=1, facecolors=rgb,
                       linewidth=0, antialiased=False, shade=False)

plt.show()

힐셰이딩 사용자 정의

이 단계에서는 내장 셰이딩을 재정의하고 "shade"에서 계산된 음영 처리된 표면의 RGB 색상을 전달하여 힐셰이딩을 사용자 정의합니다.

## Set up plot
fig, ax = plt.subplots(subplot_kw=dict(projection='3d'))

ls = LightSource(270, 45)
## To use a custom hillshading mode, override the built-in shading and pass
## in the rgb colors of the shaded surface calculated from "shade".
rgb = ls.shade(z, cmap=cm.gist_earth, vert_exag=0.1, blend_mode='soft')
surf = ax.plot_surface(x, y, z, rstride=1, cstride=1, facecolors=rgb,
                       linewidth=0, antialiased=False, shade=False)

plt.show()

검토 및 수정

코드를 검토하고 필요한 수정을 수행합니다. 코드가 정확하고 주석이 잘 달려 있는지 확인합니다.

요약

이 랩에서는 Python Matplotlib 을 사용하여 3D 표면 플롯에서 사용자 정의 힐셰이딩을 사용하는 방법을 배웠습니다. 힐셰이딩을 사용자 정의함으로써 시각적으로 더 매력적이고 유익한 플롯을 만들 수 있었습니다.