소개
Matplotlib 는 Python 데이터 시각화 라이브러리로, 사용자가 Python 에서 다양한 정적, 애니메이션, 대화형 시각화를 생성할 수 있도록 합니다. 이 랩에서는 Matplotlib 를 사용하여 플롯에 하이퍼링크를 추가하는 방법을 배우게 됩니다. 이 랩을 마치면 Matplotlib 에서 산점도 (scatter plot) 와 이미지에 하이퍼링크를 추가할 수 있게 됩니다.
VM 팁
VM 시작이 완료되면, 왼쪽 상단을 클릭하여 Notebook 탭으로 전환하여 실습을 위해 Jupyter Notebook에 접근하십시오.
때로는 Jupyter Notebook 이 로딩을 완료하는 데 몇 초 정도 기다려야 할 수 있습니다. Jupyter Notebook 의 제한으로 인해 작업의 유효성 검사는 자동화될 수 없습니다.
학습 중에 문제가 발생하면 언제든지 Labby 에게 문의하십시오. 세션 후 피드백을 제공해주시면 문제를 신속하게 해결해 드리겠습니다.
필요한 라이브러리 임포트
시작하기 전에, 이 랩에 필요한 라이브러리를 임포트해야 합니다. matplotlib.pyplot, numpy, 그리고 matplotlib.cm을 사용할 것입니다.
import matplotlib.pyplot as plt
import numpy as np
import matplotlib.cm as cm
하이퍼링크가 있는 산점도 생성
이 단계에서는 산점도를 생성하고 마커에 하이퍼링크를 추가합니다. 산점도를 생성하는 코드는 다음과 같습니다.
fig = plt.figure()
s = plt.scatter([1, 2, 3], [4, 5, 6])
하이퍼링크를 추가하려면 산점도 객체의 set_urls() 메서드를 사용해야 합니다. 이 메서드는 URL 목록을 인수로 받습니다. 업데이트된 코드는 다음과 같습니다.
s.set_urls(['https://www.bbc.com/news', 'https://www.google.com/', None])
처음 두 개의 마커는 각각 https://www.bbc.com/news 및 https://www.google.com/에 대한 하이퍼링크를 갖습니다. 세 번째 마커는 하이퍼링크가 없습니다. 마지막으로, fig.savefig()를 사용하여 플롯을 SVG 파일로 저장할 수 있습니다.
fig.savefig('scatter.svg')
하이퍼링크가 있는 이미지 생성
이 단계에서는 이미지를 생성하고 하이퍼링크를 추가합니다. 이미지를 생성하는 코드는 다음과 같습니다.
fig = plt.figure()
delta = 0.025
x = y = np.arange(-3.0, 3.0, delta)
X, Y = np.meshgrid(x, y)
Z1 = np.exp(-X**2 - Y**2)
Z2 = np.exp(-(X - 1)**2 - (Y - 1)**2)
Z = (Z1 - Z2) * 2
im = plt.imshow(Z, interpolation='bilinear', cmap=cm.gray,
origin='lower', extent=[-3, 3, -3, 3])
이미지에 하이퍼링크를 추가하려면 이미지 객체의 set_url() 메서드를 사용해야 합니다. 이 메서드는 URL 을 인수로 받습니다. 업데이트된 코드는 다음과 같습니다.
im.set_url('https://www.google.com/')
이미지는 https://www.google.com/에 대한 하이퍼링크를 갖습니다. 마지막으로, fig.savefig()를 사용하여 플롯을 SVG 파일로 저장할 수 있습니다.
fig.savefig('image.svg')
코드 실행
Python 환경에서 코드를 실행합니다. scatter.svg와 image.svg 두 개의 SVG 파일이 생성되어야 합니다. 이 파일들을 열고 산점도와 이미지의 마커 위에 마우스를 올려보세요. 하이퍼링크가 있는 툴팁이 표시되어야 합니다.
요약
이 랩에서는 Matplotlib 에서 산점도와 이미지에 하이퍼링크를 추가하는 방법을 배웠습니다. 산점도에는 set_urls() 메서드를 사용하고, 이미지에는 set_url() 메서드를 사용했습니다. 플롯에 하이퍼링크를 추가하는 것은 청중에게 추가 정보나 리소스를 제공하려는 경우 유용할 수 있습니다.