안녕하세요~ 꽁냥이에요. 시각화 관련 내용을 검색하다가 꽁냥이 맘에 쏙 드는 스타일을 발견해서 공유하려고 해요. 바로 'cyberpunk'라는 스타일인데요. 이 스타일은 mplcyberpunk 모듈에서 제공하고 있어요.
아래는 mplcyberpunk 모듈 깃허브에서 예제로 보여준 그림인데요. 보시면 뭔가 네온사인이 켜져 있는 듯한 화려한 스타일이 너무 맘에 들더라고요.
그래서 이번 포스팅에서는 cyberpunk 스타일 적용하는 예제에 대해서 알아보려고 합니다.
설치
cyberpunk 스타일을 적용하기 위해서 mplcyberpunk 모듈을 설치해줘야 합니다.
pip install mplcyberpunk
cyberpunk 스타일 적용하기
- 기본 사용법 -
사용법은 style.use('cyberpunk')를 선언하면 됩니다.
import matplotlib.pyplot as plt
plt.rcParams['axes.unicode_minus'] = False
import numpy as np
import random
import mplcyberpunk
random.seed(10)
x = range(10)
y = [random.randint(0,5) for _ in range(10)]
fig = plt.figure(figsize=(7,7))
plt.style.use('cyberpunk') # cyberpunk 스타일을 쓰겠습니다.
plt.plot(x, y, marker='o')
plt.show()
- 후광 효과 적용 -
막상 그려보면 배경색과 기본 선색상만 다른 것처럼 보여서 특별해보이진 않습니다. 하지만 mpltcyberpunk의 진가는 glow 효과(빛이 발산하는 효과)를 구현한 여러 가지 기능이 제공한다는 점에 있습니다.
여기서는 선 주변의 후광효과를 적용하는 mplcyberpunk.make_lines_glow 과 선 아래 영역에 그라디언트를 적용하는 mplcyberpunk.add_gradient_fill를 사용해보겠습니다.
import matplotlib.pyplot as plt
plt.rcParams['axes.unicode_minus'] = False
import numpy as np
import random
import mplcyberpunk
random.seed(10)
x = range(10)
y = [random.randint(0,5) for _ in range(10)]
fig = plt.figure(figsize=(12,7),facecolor='k')
plt.style.use('cyberpunk') # cyberpunk 스타일을 쓰겠습니다.
glow_type = ['mplcyberpunk.make_lines_glow', 'mplcyberpunk.add_gradient_fill']
for i, gt in enumerate(glow_type):
ax = fig.add_subplot(1, 2, i+1)
ax.plot(x, y, marker='o')
if gt == 'mplcyberpunk.make_lines_glow':
mplcyberpunk.make_lines_glow(ax)
else:
mplcyberpunk.add_gradient_fill(ax, alpha_gradientglow=0.5)
ax.set_title(gt, size=20)
plt.show()
마지막으로 2개의 컬러맵을 이용한 코사인 곡선을 그려보았어요. 즐감하시면서 마무리하겠습니다.
plt.style.use('cyberpunk')
cmap_name = ['cool', 'coolwarm']
cmap_list = [plt.get_cmap(cmap_str) for cmap_str in cmap_name] ## 컬러맵 리스트
x = np.linspace(0,2*np.pi,40)
y = np.cos(x)
coef = np.linspace(-1,1,20)
n = len(coef)
fig = plt.figure(figsize=(10,6))
fig.set_facecolor('k')
for i, cmap in enumerate(cmap_list):
ax = fig.add_subplot(1, 2, i+1)
for j, c in enumerate(coef):
if c == 0:
continue
ax.plot(x, c*y, color=cmap(j/(n-1)))
ax.set_title(cmap_name[i], size=20)
mplcyberpunk.make_lines_glow(ax)
plt.show()
'데이터 분석 > 시각화' 카테고리의 다른 글
[Matplotlib] gridspec을 이용하여 여러 Axes 배치하기(feat. subplot) (413) | 2022.06.17 |
---|---|
[Matplotlib] fill_between을 이용하여 두 곡선 사이 영역 색칠하기 (394) | 2022.05.24 |
[Matplotlib] 배경색(Face Color, Background Color) 설정하기 (429) | 2022.05.24 |
bar_chart_race 패키지로 움직이는 막대 그래프(Bar Chart, 바 차트) 그려보기 with Python (397) | 2022.04.28 |
[Matplotlib] y축 눈금 숫자 형식(Number Format) 바꾸기(set_yticklabels) 백분율(%), 천단위 콤마(,), 과학적 표기(Scientific Notation) 변경 (425) | 2022.04.19 |
댓글