728x90
Matplotlib style
- matplotlib을 기본의 기본 설정을 사용하면 다소 투박한 배경에 그래프가 그려진다.
- 우연히 python에서 ggplot을 사용해 그린 그래프를 보고 아름답다고 생각을 해 다른 라이브러리를 공부해보려고 생각했다.
- 필요한 기능의 대부분을 matplotlib으로 해결을 할 수 있다보니 다른 라이브러리를 공부하는 것을 계속 미루던 참에 matplotlib의 style을 바꿀 수 있는 방법을 발견했다.
Seaborn style 사용하기
- matplotlib 외에 처음 알게 된 라이브러리는 seaborn이다.
- seaborn은 matplotlib에 기반해 좀 더 아름답고 효과적으로 데이터 시각화를 도와주는 라이브러리이다.
- seaborn은 5가지 기본 테마를 제공한다.
sns.set_style('테마')
로 스타일을 지정할 수 있다. - 이렇게 스타일을 지정한 후 matplotlib 라이브러리르 사용해서 그래프를 그리면 지정한 스타일이 적용된 그래프를 그릴 수 있다.

Matplotlib style 사용하기
- matplotlib에서 seaborn style을 포함한 여러가지 style을 제공한다.
- 사용가능한 style의 목록은
plt.style.available
을 통해서 확인할 수 있다. - 스타일을 적용할 때는
plt.use.style('테마')
로 적용해 줄 수 있다.

마무리
- 큰 데이터를 다룰 때 seaborn이 matplotlib에 비해 시간이 많이 걸리는데 간단한 line plot이나 scatter plot을 그릴 때, 이 방법으로 스타일을 적용하면 좋을 것 같다.
- 참고로 예제의 그래프를 그리는데 걸린 시간은 matplotlib이 806
, seaborn이 19.2μsμs 으로 seaborn이 약 24배의 시간이 더 소요됐다.ms - 50 point의 데이터를 사용해 느끼기 어려운 차이지만 데이터 포인트 수가 늘어나면 이 차이는 더 심해진다.
- 참고로 예제의 그래프를 그리는데 걸린 시간은 matplotlib이 806
- 그럼에도 seaborn 정도는 꼭 익혀두어야 이후에 보고서나 발표 자료의 질을 높힐 수 있을 것 같다.
포스팅에 사용된 코드
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import matplotlib.pyplot as plt | |
import seaborn as sns | |
import numpy as np | |
x = np.linspace0,2 | |
y = x**2 + np.random.randn50 | |
## seaborn style | |
styles = ['darkgrid','whitegrid','dark','white','ticks'] | |
plt.figurefigsize=(10,20) | |
for i,style in enumeratestyles: | |
plt.subplot5,1,i+1 | |
sns.set_stylestyle | |
plt.plotx,y | |
plt.titlestyle | |
## | |
mpl_styles = plt.style.available | |
plt.figurefigsize=(10,60) | |
for i,style in enumeratemplstyles: | |
plt.subplot13,2,i+1 | |
plt.style.usestyle | |
plt.plotx,y | |
plt.titlestyle,fontsize=15,color=′k′ | |
Reference
[1] matplotlib customizeing
'프로그래밍 언어 > python' 카테고리의 다른 글
jupyter module autoreload 0 | 2022.07.26 |
---|---|
*args와 **kwargs 활용하기 0 | 2022.07.26 |
lambda 함수 0 | 2022.07.26 |
유연한 matplotlib subplot 사용하기 0 | 2022.07.26 |
numpy array를 사용할 때 for문을 피해야하는 이유 0 | 2022.07.26 |