학습 주제
- 데이터 시각화 - matplotlib
주요 학습 내용
- 시각화(Visualization)
- 데이터 분석 결과를 Plot이나 Graph 등을 통해서 시각적으로 전달할 수 있는 방법
- matplotlib은 다양한 데이터를 많은 방법으로 도식화 할 수 있도록 하는 파이썬 라이브러리
- matplotlib을 이용하면 numpy나 pandas에서 사용되는 자료구조를 쉽게 시각화 할 수 있다.
- Matplotlib Visualization
- Colab이나 Jupyter notebook 상에서
plt.plot()등의 명령문을 작성 뒤,
plt.show() 를 통해서 바로 플롯을 보거나
plt.savefig() 를 통해서 플롯을 파일로 저장import matplotlib.pyplot as plt # 기본 문법 plt.plot([1, 2, 3], [3, 6, 9]) plt.plot([1, 2, 3], [2, 4, 9]) plt.show()
- plt.title(") : 플롯의 타이틀을 작성해준다.
import matplotlib.pyplot as plt plt.plot([1, 2, 3], [3, 6, 9]) plt.plot([1, 2, 3], [2, 4, 9]) # 타이틀 & font 설정 plt.title('이것은 타이틀 입니다') plt.show()
- plt.xlabel(", fontsize=), plt.ylabel(", fontsize=) : 플롯의 x,y 축 label을 설정
plt.plot([1, 2, 3], [3, 6, 9]) plt.plot([1, 2, 3], [2, 4, 9]) plt.title('Label 설정 예제입니다', fontsize=20) # X축 & Y축 Label 설정 plt.xlabel('X축', fontsize=20) plt.ylabel('Y축', fontsize=20) plt.show()
- plt.xticks(rotation=), plt.yticks: 플롯의 X축, Y축에 눈금을 그어줍니다
- plt.legend([‘’,’’,...], fontsize=):앞에서 정의된 각 플롯에 대해서 범례를 설정
# 범례(Legend) 설정 plt.plot(np.arange(10), np.arange(10)*2) plt.plot(np.arange(10), np.arange(10)**2) plt.plot(np.arange(10), np.log(np.arange(10))) # 타이틀 & font 설정 plt.title('범례 설정 예제입니다', fontsize=20) # X축 & Y축 Label 설정 plt.xlabel('X축', fontsize=20) plt.ylabel('Y축', fontsize=20) # X tick, Y tick 설정 plt.xticks(rotation=90) plt.yticks(rotation=30) # legend 설정 plt.legend(['10 * 2', '10 ** 2', 'log'], fontsize=15) plt.show()
- plt.xlim(), plt.ylim(): 플롯의 X축, Y축의 끝값들을 설정해줍니다
# X와 Y의 한계점(Limit) 설정: xlim(), ylim() plt.plot(np.arange(10), np.arange(10)*2) plt.plot(np.arange(10), np.arange(10)**2) plt.plot(np.arange(10), np.log(np.arange(10))) # 타이틀 & font 설정 plt.title('이것은 타이틀 입니다', fontsize=20) # X축 & Y축 Label 설정 plt.xlabel('X축', fontsize=20) plt.ylabel('Y축', fontsize=20) # X tick, Y tick 설정 plt.xticks(rotation=90) plt.yticks(rotation=30) # legend 설정 plt.legend(['10 * 2', '10 ** 2', 'log'], fontsize=15) # x, y limit 설정 plt.xlim(0, 5) plt.ylim(0.5, 10) plt.show()
- 선형 그래프나 산점도의 경우 marker나 markersize, linestyle, color, alpha 등을 설정해 각각 점 모양,
점 크기, 선 모양, 색깔, 투명도 등을 조절할 수 있다 - 특히, 산점도에서 color를 label로 주어 label에 따른 분포를 파악하는 것도 가능
# 마커(marker) # '.': point marker # 'o': circle marker # 'v': triangle_down marker # '+': plus marker # '*': star marker plt.plot(np.arange(10), np.arange(10)*2 + 10, marker='.', markersize=10) plt.plot(np.arange(10), np.arange(10)*2, marker='o', markersize=10) plt.plot(np.arange(10), np.arange(10)*2 - 10, marker='v', markersize=10) plt.plot(np.arange(10), np.arange(10)*2 - 20, marker='+', markersize=15) plt.plot(np.arange(10), np.arange(10)*2 - 30, marker='*', markersize=20) # 타이틀 & font 설정 plt.title('마커 설정 예제', fontsize=20) # X축 & Y축 Label 설정 plt.xlabel('X축', fontsize=20) plt.ylabel('Y축', fontsize=20) # X tick, Y tick 설정 plt.xticks(rotation=90) plt.yticks(rotation=30) plt.show() #--------- # 라인(line) # '-': solid line style # '--': dashed line style # '-.': dash-dot line style # ':': dotted line style plt.plot(np.arange(10), np.arange(10)*2, marker='o', linestyle='') plt.plot(np.arange(10), np.arange(10)*2 - 10, marker='o', linestyle='-') plt.plot(np.arange(10), np.arange(10)*2 - 20, marker='v', linestyle='--') plt.plot(np.arange(10), np.arange(10)*2 - 30, marker='+', linestyle='-.') plt.plot(np.arange(10), np.arange(10)*2 - 40, marker='*', linestyle=':') # 타이틀 & font 설정 plt.title('다양한 선의 종류 예제', fontsize=20) # X축 & Y축 Label 설정 plt.xlabel('X축', fontsize=20) plt.ylabel('Y축', fontsize=20) # X tick, Y tick 설정 plt.xticks(rotation=90) plt.yticks(rotation=30) plt.show() #--------------- # 컬러(color) # 'b': blue # 'g': green # 'r': red # 'c': cyan # 'm': magenta # 'y': yellow # 'k': black # 'w': white # alpha를 통해 투명도를 조절할 수 있습니다. plt.plot(np.arange(10), np.arange(10)*2, marker='o', linestyle='-', color='b', alpha=.1) plt.plot(np.arange(10), np.arange(10)*2 - 10, marker='v', linestyle='--', color='c', alpha=.3) plt.plot(np.arange(10), np.arange(10)*2 - 20, marker='+', linestyle='-.', color='y', alpha=.8) plt.plot(np.arange(10), np.arange(10)*2 - 30, marker='*', linestyle=':', color='r', alpha=1.) # 타이틀 & font 설정 plt.title('색상 설정 예제', fontsize=20) # X축 & Y축 Label 설정 plt.xlabel('X축', fontsize=20) plt.ylabel('Y축', fontsize=20) # X tick, Y tick 설정 plt.xticks(rotation=90) plt.yticks(rotation=30) plt.show()
- Colab이나 Jupyter notebook 상에서
![]() |
![]() |
![]() |
- plt.show()와 마찬가지로, 모든 명령 이후 plt.savefig(‘filename’, dpi=)를 이용해 플롯을 저장할 수 있다
# Plot 저장하기 plt.plot(np.arange(10), np.arange(10)*2, marker='o', linestyle='-', color='b', alpha=.1) plt.plot(np.arange(10), np.arange(10)*2 - 10, marker='v', linestyle='--', color='c', alpha=.3) plt.plot(np.arange(10), np.arange(10)*2 - 20, marker='+', linestyle='-.', color='y', alpha=.8) plt.plot(np.arange(10), np.arange(10)*2 - 30, marker='*', linestyle=':', color='r', alpha=1.) # 타이틀 & font 설정 plt.title('색상 설정 예제', fontsize=20) # X축 & Y축 Label 설정 plt.xlabel('X축', fontsize=20) plt.ylabel('Y축', fontsize=20) # X tick, Y tick 설정 plt.xticks(rotation=90) plt.yticks(rotation=30) # plt.show() plt.savefig('savefig_200dpi.png', dpi=200)
반응형
'데이터분석' 카테고리의 다른 글
33-(3). seaborn (1) | 2024.01.15 |
---|---|
33-(2). Matplotlib (1) | 2024.01.15 |
32-(2). 정량적 데이터 분석 (1) | 2024.01.14 |
32-(1). 확률과 통계 (2) | 2024.01.14 |
31. 정규화, 데이터 스케일링 (2) | 2024.01.10 |