4. Matplotlib
4-1 Matplotlib과 데이터 시각화
- 직관적인 그래프가 보기 좋음!
- 숫자와 통계에 약한 사람에게도 좋음!
Matplotlib : 파이썬, 넘파이를 기반으로 만들어진 데이터 시각화 라이브러리
4-2 다양한 그래프 그려보기
In [1]:
import numpy as np
import matplotlib.pyplot as plt
year_array = np.array([2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020]) # 년도
stock_array = np.array([14.46, 19.01, 20.04, 27.59, 26.32, 28.96, 42.31, 39.44, 73.41, 132.69]) # 년도별 애플 주가
plt.plot(year_array, stock_array) # 선 그래프
plt.show() # 그래프를 보여주라는 코드
name_array = np.array(['mark', 'dongwook', 'hyojune', 'sowon', 'taeho'])
votes_array = np.array([5, 10, 6, 8, 3])
plt.bar(name_array,votes_array) # 막대 그래프
plt.show()
height_array = np.array([
187.64,174.00,179.79,192.41,188.68,160.23,179.50,168.49,168.97,174.11,
171.44,184.54,177.61,171.22,174.44,173.34,184.94,167.95,173.13,161.46,
144.47,176.54,178.64,162.58,192.70,155.46,170.46,168.13,185.33,184.69
])
weight_array = np.array([
72.32,75.67,56.68,40.29,64.78,72.35,88.45,88.04,64.19,65.47,
54.27,48.70,44.41,99.26,62.36,63.43,51.21,81.66,45.79,66.81,
56.57,75.80,62.34,52.29,69.58,76.42,71.00,74.54,60.49,64.56
])
plt.scatter(height_array, weight_array) # 산점도 그래프
plt.show()
4-4 그래프 간단하게 꾸미기
import numpy as np
import matplotlib.pyplot as plt
height_array = np.array([
187.64,174.00,179.79,192.41,188.68,160.23,179.50,168.49,168.97,174.11,
171.44,184.54,177.61,171.22,174.44,173.34,184.94,167.95,173.13,161.46,
144.47,176.54,178.64,162.58,192.70,155.46,170.46,168.13,185.33,184.69
])
weight_array = np.array([
72.32,75.67,56.68,40.29,64.78,72.35,88.45,88.04,64.19,65.47,
54.27,48.70,44.41,99.26,62.36,63.43,51.21,81.66,45.79,66.81,
56.57,75.80,62.34,52.29,69.58,76.42,71.00,74.54,60.49,64.56
])
plt.scatter(height_array, weight_array) # 산점도 그래프
plt.show()
plt.scatter(height_array, weight_array, c='red') # 산점도 그래프
plt.title('Height and Weight')
plt.xlabel('Height (cm)')
plt.ylabel('Weight (kg)')
plt.show()
plt.scatter(height_array, weight_array, c='purple', marker='+') # 산점도 그래프
plt.title('Height and Weight')
plt.xlabel('Height (cm)')
plt.ylabel('Weight (kg)')
plt.show()
https://matplotlib.org/stable/api/markers_api.html
=> 참고해서 그래프의 marker 를 꾸밀 수 있음
4-5 그래프 사이즈 조절하기
지난 영상에서 그래프를 간단하게 꾸미는 방법에 대해 배웠는데요. 이번 레슨에서는 Matplotlib을 사용해서 그래프의 크기를 조절하는 방법 몇 가지를 소개해 드리겠습니다. 이번에도 키와 몸무게 데이터가 들어 있는 height_array와 weight_array를 사용하겠습니다.
import numpy as np
import matplotlib.pyplot as plt
height_array = np.array([
165, 164, 155, 151, 157, 162, 155, 157, 165, 162,
165, 167, 167, 183, 180, 184, 177, 178, 175, 181,
172, 173, 169, 172, 177, 178, 185, 186, 190, 187
])
weight_array = np.array([
62, 59, 57, 55, 60, 58, 51, 56, 68, 64,
57, 58, 64, 79, 73, 76, 61, 65, 83, 80,
67, 82, 88, 62, 61, 79, 81, 68, 83, 80
])
일단 아래와 같은 코드를 통해 산점도를 그려 볼게요. Matplotlib에서는 그래프의 크기를 기본적으로 인치 단위로 표현하는데요. 따로 설정을 하지 않으면 가로 6인치, 세로 4인치 크기의 그래프가 나옵니다.
plt.scatter(height_array, weight_array)
plt.title('Height and Weight')
plt.xlabel('Height (cm)')
plt.ylabel('Weight (kg)')
plt.show()
다른 크기의 그래프를 원할 때에는 아래와 같이 pyplot의 figure()라는 함수를 호출해서, 그래프의 크기를 의미하는 figsize라는 파라미터에 가로 길이, 세로 길이 순서로 튜플 값을 넘겨주면 됩니다. 가로 10인치, 세로 4인치 크기의 그래프를 그려 봤는데, 기존 그래프보다 가로로 좀 더 길쭉한 그래프가 나온 거 보이시죠? 이 방법은 그래프 하나하나의 크기를 설정할 때 사용하는데요. 즉, 그래프 크기를 가로 10인치, 세로 4인치로 설정한 코드는 이번에만 적용되고 다음에 그래프를 그릴 때에는 다시 기본값(가로 6인치, 세로 4인치)으로 초기화가 됩니다.
plt.figure(figsize=(10, 4))
plt.scatter(height_array, weight_array)
plt.title('Height and Weight')
plt.xlabel('Height (cm)')
plt.ylabel('Weight (kg)')
plt.show()
이런 식으로 그래프를 그릴 때마다 일일이 크기를 지정하지 않고, 전체적으로 그래프 크기를 통일하고 싶을 수도 있겠죠? 이럴 때에는 아래와 같이 pyplot의 rcParams 속성에 직접 접근하여 그래프 사이즈의 기본 설정을 변경할 수 있습니다. 이번에는 가로 5인치, 세로 5인치로 바꿔줬는데요. 앞으로 같은 노트북 파일 안에서 그래프를 그리면, 따로 설정을 바꿔주지 않는 한 계속 가로 5인치, 세로 5인치 크기의 그래프가 나올 겁니다.
plt.rcParams['figure.figsize'] = (5, 5)
plt.scatter(height_array, weight_array)
plt.title('Scatter Plot')
plt.xlabel('X Label')
plt.ylabel('Y Label')
plt.show()
간단히 정리하면, 그래프의 크기를 개별적으로 바꾸고 싶을 때에는 figure() 함수로 figsize를 설정하면 되고요. 전체적으로 그래프 크기를 일관되게 설정하고 싶을 때에는 rcParams 속성을 변경해 주면 됩니다. 사실 그래프 크기를 설정하는 방법은 더 다양한데요. Matplotlib 기준으로는 이번 레슨에서 소개해 드린 방법들이 가장 쉽고 간단한 편이니까, 노트를 잘 읽어 보고 코드를 숙지해 두시는 걸 추천드립니다!
4-7 그래프에 한글로 된 텍스트 넣기
plt.scatter(height_array, weight_array, c='#6500C3', marker='s')
plt.rc('font', family = 'Malgun Gothic') // family에 font 이름 넣어주기 (맑은고딕은 윈도우, 애플고딕은 애플)
plt.title('키와 몸무게')
plt.xlabel('키(cm)')
plt.ylabel('Weight (kg)')
plt.show()
'데이터 사이언스 > 인강' 카테고리의 다른 글
[코드잇] 데이터 사이언스 수료증들 (0) | 2024.09.09 |
---|---|
[코드잇] 데이터 사이언스 Toolkit 4. pandas (0) | 2024.08.19 |
[코드잇] 데이터 사이언스 Toolkit 2. Numpy (0) | 2024.08.07 |
[코드잇] 기초 통계와 데이터 시각화 (0) | 2024.08.05 |
[코드잇] 데이터 사이언스 Toolkit 1. Jupyter Notebook (0) | 2024.07.29 |