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.