Python 을 이용한 벡터 그래픽 래스터화

Beginner

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

소개

이 랩에서는 벡터 그래픽의 래스터화에 대해 배우게 됩니다. 래스터화는 벡터 그래픽을 래스터 이미지 (픽셀) 로 변환하는 과정입니다. 렌더링 속도를 높이고 대규모 데이터 세트에 대해 더 작은 파일을 생성할 수 있지만, 고정된 해상도라는 단점이 있습니다. Python Matplotlib 라이브러리를 사용하여 래스터화 개념을 설명합니다.

VM 팁

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

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

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

라이브러리 임포트

시작하기 전에 필요한 라이브러리를 임포트해야 합니다.

import matplotlib.pyplot as plt
import numpy as np

데이터 생성

래스터화 개념을 설명하는 데 사용할 데이터를 생성합니다.

d = np.arange(100).reshape(10, 10)  ## the values to be color-mapped
x, y = np.meshgrid(np.arange(11), np.arange(11))

theta = 0.25*np.pi
xx = x*np.cos(theta) - y*np.sin(theta)  ## rotate x by -theta
yy = x*np.sin(theta) + y*np.cos(theta)  ## rotate y by -theta

네 개의 서브플롯이 있는 그림 생성

래스터화의 다양한 측면을 설명하기 위해 네 개의 서브플롯이 있는 그림을 생성합니다.

fig, ((ax1, ax2), (ax3, ax4)) = plt.subplots(2, 2, layout="constrained")

래스터화 없이 pcolormesh 플롯 생성

래스터화와 비 (非) 래스터화의 차이점을 설명하기 위해 래스터화 없이 pcolormesh 플롯을 생성합니다.

ax1.set_aspect(1)
ax1.pcolormesh(xx, yy, d)
ax1.set_title("No Rasterization")

래스터화가 있는 pcolormesh 플롯 생성

래스터화가 렌더링 속도를 높이고 더 작은 파일을 생성하는 방법을 설명하기 위해 래스터화가 있는 pcolormesh 플롯을 생성합니다.

ax2.set_aspect(1)
ax2.set_title("Rasterization")
ax2.pcolormesh(xx, yy, d, rasterized=True)

래스터화 없이 오버레이된 텍스트가 있는 pcolormesh 플롯 생성

벡터 그래픽스가 축 및 텍스트와 같은 일부 아티스트에 대해 벡터 그래픽스의 장점을 유지할 수 있는 방법을 설명하기 위해 래스터화 없이 오버레이된 텍스트가 있는 pcolormesh 플롯을 생성합니다.

ax3.set_aspect(1)
ax3.pcolormesh(xx, yy, d)
ax3.text(0.5, 0.5, "Text", alpha=0.2,
         va="center", ha="center", size=50, transform=ax3.transAxes)
ax3.set_title("No Rasterization")

래스터화가 있는 오버레이된 텍스트가 있는 pcolormesh 플롯 생성

래스터화가 축 및 텍스트와 같은 일부 아티스트에 대해 벡터 그래픽스가 벡터 그래픽스의 장점을 유지할 수 있도록 하는 방법을 설명하기 위해 래스터화가 있는 오버레이된 텍스트가 있는 pcolormesh 플롯을 생성합니다.

ax4.set_aspect(1)
m = ax4.pcolormesh(xx, yy, d, zorder=-10)
ax4.text(0.5, 0.5, "Text", alpha=0.2,
         va="center", ha="center", size=50, transform=ax4.transAxes)
ax4.set_rasterization_zorder(0)
ax4.set_title("Rasterization z$<-10$")

그림 저장

pdf 및 eps 형식으로 그림을 저장합니다.

plt.savefig("test_rasterization.pdf", dpi=150)
plt.savefig("test_rasterization.eps", dpi=150)

if not plt.rcParams["text.usetex"]:
    plt.savefig("test_rasterization.svg", dpi=150)
    ## svg backend currently ignores the dpi

요약

이 랩에서는 벡터 그래픽의 래스터화에 대해 배웠습니다. Python Matplotlib 라이브러리를 사용하여 래스터화의 개념을 설명했습니다. 래스터화의 다양한 측면을 설명하기 위해 네 개의 서브플롯이 있는 그림을 만들었습니다. 또한 래스터화가 렌더링 속도를 높이고 대규모 데이터 세트에 대해 더 작은 파일을 생성할 수 있지만 고정 해상도의 비용이 든다는 것을 배웠습니다. 또한 래스터화가 축 및 텍스트와 같은 일부 아티스트에 대해 벡터 그래픽스가 벡터 그래픽스의 장점을 유지할 수 있도록 하는 방법을 배웠습니다.