matplotlib 07 Polar Chart
Page content
강의 홍보
- 취준생을 위한 강의를 제작하였습니다.
- 본 블로그를 통해서 강의를 수강하신 분은 게시글 제목과 링크를 수강하여 인프런 메시지를 통해 보내주시기를 바랍니다.
스타벅스 아이스 아메리카노를 선물
로 보내드리겠습니다.
- [비전공자 대환영] 제로베이스도 쉽게 입문하는 파이썬 데이터 분석 - 캐글입문기
공지
제 수업을 듣는 사람들이 계속적으로 실습할 수 있도록 강의 파일을 만들었습니다. 늘 도움이 되기를 바라며. 참고했던 교재 및 Reference는 꼭 확인하셔서 교재 구매 또는 관련 Reference를 확인하시기를 바랍니다.
I. Matplotlib & Seaborn
(1) 기본 개요
Matplotlib
는 파이썬 표준 시각화 도구라고 불리워지며 파이썬 그래프의 기본 토대가 된다고 해도 무방하다. 객체지향 프로그래밍을 지원하므로 세세하게 꾸밀 수 있다.
Seaborn
그래는 파이썬 시각화 도구의 고급 버전이다. Matplotlib
에 비해 비교적 단순한 인터페이스를 제공하기 때문에 초보자도 어렵지 않게 배울 수 있다.
(2) matplotlib & Seabon 설치
설치방법은 윈도우 명령 프롬프트, MacOS, Linux 터미널에서 pip install matplotlib
입력하면 되지만, 간혹 여러 환경에 따라 달라질 수 있으니 관련 싸이트에서 확인하기를 바란다.
- matplotlib 설치 방법: https://matplotlib.org/users/installing.html
- seaborn 설치 방법: https://seaborn.pydata.org/installing.html
II. Polar Chart
Polar Chart
는 보통 Spider Web Plot
이라고 부르기도 한다. 이번에는 간단하게 데이터를 만들어서 그래프를 작성하도록 해보자.
(1) 데이터 생성
- 주요 과목별 중간고사 점수와 기말고사 점수 데이터를 만들었다고 가정해보자.
import pandas as pd
# 주요 과목
subjects = ["Korean Language", "Math", "Science", "History", "Programming", "English"]
# grades
mid_grades = [95, 90, 92, 85, 70, 80, 95]
final_grades = [75, 90, 80, 75, 86, 93, 75]
# theta
theta = np.linspace(0, 2 * np.pi, len(mid_grades))
print(theta)
[0. 1.04719755 2.0943951 3.14159265 4.1887902 5.23598776
6.28318531]
- 위 코드에서 첫번째 값과 마지막 값이 동일한 것을 확인할 수 있다. 이유는 원 그래프를 그릴 때, 선이 이어지도록 해줘야 하기 때문에
polar graph
를 작성할 때는 데이터 셋에 주의해야 한다. - 우선
np.linspace
값은 축을 작성할 때, 간격 만들기에 사용되는 함수이다. theta
값의 역할은 x축의 역할을 한다. 즉,plt.plot(x, y)
형태로 작성할 때,x
값 대신 대응하여theta
값을 입력해주면 된다.
(2) Spider Plot 초기화
첫번째로 해야할 작업은 Spider Plot
을 생성하는 것이다. 우선 코드를 확인해보자.
import numpy as np
import matplotlib.pyplot as plt
plt.figure(figsize = (10, 6))
plt.subplot(polar=True)
<matplotlib.axes._subplots.PolarAxesSubplot at 0x7f58477a7cf8>
Spider Plot
그래프를 그리기 위해서는plt.subplot()
안에 인수polar=True
값을 입력해주면 된다.
(3) 격자 생성
- 우선 코드를 작성한다.
import numpy as np
import matplotlib.pyplot as plt
plt.figure(figsize = (10, 6))
plt.subplot(polar=True)
(lines, labels) = plt.thetagrids(range(0, 360, int(360/len(subjects))), (subjects))
- 입력값을 변수 두개에 저장하는 코드를 진행한다. (
lines
,labels
) - plt.thetagrids는
polar
그래프 작성에 필요한theta gridlines
을 획득하기 위한 것이다.
(lines, labels) = plt.thetagrids(range(0, 360, int(360/len(subjects))), (subjects))
- 그래프 특성상, 격자(
line
)와 함께lables
가 동시에 필요하기 때문에입력 값을 변수 두 개에 저장하는
형태로 작성하였다.
(4) 방사형 그래프 완성
- 우선 코드부터 확인한다.
import numpy as np
import matplotlib.pyplot as plt
plt.figure(figsize = (10, 6))
plt.subplot(polar=True)
(lines, labels) = plt.thetagrids(range(0, 360, int(360/len(subjects))), (subjects))
plt.plot(theta, mid_grades)
plt.fill(theta, mid_grades, 'b', alpha=0.2)
plt.plot(theta, final_grades)
plt.legend(labels=('Mid-Term Grades', 'Final-Term Grades'))
plt.title("Mid Vs. Final grades by Subject")
plt.show()
plot.fill
을 작성한 이유는,mid_grades
의 영역을 표시하기 위함이다.'b'
는 파란색을 뜻하는blue
를 의미한다.alpha
는 투명도를 의미하며 0~1 사이의 값이 온다.
III. 실습파일
- 구글코랩에서 빠르게 실습도 할 수 있습니다. 실습
IV. Reference
Mukhiya, Uuresh Kumar. Ahmed Usman. Hands-on Exploratory Data Analysis With Python: Perform EDA Techniques to understand, Summarize, and Investigate Your Data. Packt publishing limited, 2020.