본문 바로가기
데이터 분석/시각화

[Matplotlib] mplcyberpunk 모듈 - 'cyberpunk' 스타일 소개

by 부자 꽁냥이 2022. 5. 24.

안녕하세요~ 꽁냥이에요. 시각화 관련 내용을 검색하다가 꽁냥이 맘에 쏙 드는 스타일을 발견해서 공유하려고 해요. 바로 'cyberpunk'라는 스타일인데요. 이 스타일은 mplcyberpunk 모듈에서 제공하고 있어요.

 

아래는 mplcyberpunk 모듈 깃허브에서 예제로 보여준 그림인데요. 보시면 뭔가 네온사인이 켜져 있는 듯한 화려한 스타일이 너무 맘에 들더라고요.

 

cyberpunk 스타일 예제 출처 : https://github.com/dhaitz/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()

 

cyberpunk 적용 선 그림

- 후광 효과 적용 -

막상 그려보면 배경색과 기본 선색상만 다른 것처럼 보여서 특별해보이진 않습니다. 하지만 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()

 

mplcyberpunk


 

 


댓글


맨 위로