Matplotlib

 

파이썬 데이터 시각화 라이브러리

 

라이브러리 vs 프레임워크

 

라이브러리는 개발자들이 만들었을 뿐 이를 바탕으로 원하는 목표를 달성하려면 라이브러리 내부에 있는 코드들을 조합해서 만들어 내야 하지만,

 

프레임워크는 이미 틀이 짜여있고, 그 틀에서 내용물을 채워가며 결과물을 만들어가는 구조이다.

 

matplotlib 사용하기

 

plt.plot([list]) 

 

꺾은선 그래프를 그리는 함수이다. 

다음과 같은 그래프가 나타난다.

 

 

x는 각 리스트의 인덱스,

y는 각 리스트의 요소를 나타냄을 알 수 있다.

 

plt.figure(figsize=(tuple))을 통해 도면 사이즈를 조정할 수 있다.

 

figsize가 (6,6)일 땐 다음과 같은 그래프가 나타난다.

 

 

(3,3)일 땐 다음과 같은 그래프가 나타난다.

 

 

확실히 도면의 크기가 조절된 것을 확인할 수 있다.

 

plt.plot(x, y)

 

x는 정의역, y는 f(x)의 값 혹은 연산 그 자체를 넣으면 2차함수 그래프를 그릴 수 있다.

 

 

 

plt.xlabel('str') / plt.ylabel('str')

 

x축과 y축에 대한 설명을 추가할 수 있다.

 

 

 

plt.axis([x_min, x_max, y_min, y_max])

 

그래프의 범위를 설정할 수 있다.

 

plt.xticks([range]) / plt.yticks([range])

 

각 x축과 y축에 눈금을 그래프의 어디에 위치시킬 것인지 설정할 수 있다.

 

 

plt.title("str")

 

그래프의 위에 제목을 다는 것이다.

 

 

plt.legend()

 

plt.plot()에서 선이 갖는 의미를 라벨링해준 후 plt.legend()를 해주면 선에 대한 범례를 나타내준다. 이 때 주의할 점은, 꼭 선이 생성된 후에 나타내주어야 하므로 plt.plot() 이후에 작성해주어야 한다.

 


그래프의 종류

 

꺾은선 그래프 (Plot)

 

.plot()

 

시계열 데이터에서 많이 사용한다.

 

산점도 (Scatter Plot)

 

.scatter()

 

 

상관관계를 확인할 때 좋다.

 

박스 그림 (Box Plot)

 

.boxplot()

 

 

수치형 데이터에 대한 정보를 나타낼 때 사용한다. Q1, Q2, Q3(사분위수)와 최소값, 최대값에 대한 정보가 나타나있다.

 

맨 아래 선이 min 값

그 위 박스가 시작되는 부분이 Q1

주황색 선이 Q2 (median)

박스가 끝나는 부분이 Q3

맨 위 선이 max 값이다.

 

.boxplot((tuple))을 넣어주면 두 가지 값에 대한 박스 그림을 나타낼 수 있다.

 

 

막대형 그래프 (Bar plot)

 

.bar(x, y)

 

 

범주형 데이터의 값과 그 값의 크기를 직사각형으로 나타낸 그림이다.

 

 

※ 히스토그램

 

.hist()

 

 

막대형 그래프와 비슷하지만 계급으로 나타낸다는 특징이 있다.

즉, 0, 1, 2 그 때 그 때의 값을 나타내는 것이 아니라 0~2까지의 "범주형" 데이터로 구성 후 그림을 그린다.

 

원형 그래프 (Pie Chart)

 

.pie()

 

 

데이터에서 전체에 대한 부분의 비율을 부채꼴로 나타낸 그래프이다.

다른 그래프에 비해 비율 확인에 용이하다.


Seaborn

 

커널밀도그림 (Kernel Density Plot)

 

sns.kdeplot()

 

 

히스토그램과 같은 연속적 분포를 곡선화해서 그린 그림이다.

kdeplot에는 shade라는 옵션이 있는데 이를 True로 해주면 다음과 같이 나온다.

 


카운트그림 (Count Plot)

 

sns.countplot()

 

범주형 column의 빈도수를 시각화한다. => Groupby 후 도수를 하는 것과 동일한 효과가 나온다.

 

 

vote_df란 dataframe 생성 후 groupby 해주어 bar chart로 나타낸 모습이다. 이는 sns.countplot()으로 더 간단하면서도 깔끔하게 나타낼 수 있다. 

 

 

다음과 같이 xlabel과 ylabel도 자동으로 붙여주고, count에 다른 색깔을 넣어주어 더 깔끔하게 구분할 수 있게 만들어 준다.


캣그림 (Cat Plot)

 

sns.catplot()

 

catplot - strip형태
catplot - violin형태

 

범주형 데이터와 수치형 데이터의 관계를 보여주는 함수이다.


스트립그림 (Strip Plot)

 

sns.stripplot()

 

 

scatter plot과 유사하게 데이터의 수치를 표현하는 그래프이다.

 

※ swarmplot

 

sns.swarmplot()

 

 

점이 겹쳐있는 부분은 제대로 확인할 수가 없다는 단점이 있는 스트립그림을 보완한 그래프이다.


히트맵 (Heatmap)

 

sns.heatmap()

 

 

데이터의 행렬을 색상으로 표현해주는 그래프이다.

밝으면 밝을 수록 1, 어두우면 어두울수록 0을 나타낸다.

+ Recent posts