본문 바로가기
CODING/Python

[데이터/Python] # 2 산점도 행렬

by 밍톨맹톨 2020. 8. 1.
728x90
728x90

 

이번에는 산점도 행렬을 만들어 볼 것이다

 

그림에는 나와 있지 않지만 가로 세로에 각 데이터의 x축의 평균과 표준편차 y축의 평균과 표준편차를 넣어줄 것이다

 

[ Import 라이브러리 ]

import numpy as np
import pandas as pd

import matplotlib.pyplot as plt
import seaborn as sns
plt.rcParams['figure.figsize'] = [12, 8] # figure size 고정

[ 데이터 가공 ]

dino_data = pd.read_csv('dino12.csv',index_col = 0)

dino_data.drop('dino_X',axis = 1,inplace = True)
dino_data.drop('dino_Y',axis = 1,inplace = True)

이전에 이미 dino 데이터로

그래프를 그려주었기 때문에 drop을 통해서 없애준다

axis = 1column을 의미하고

반대로 axis = 0 이면 row 삭제를 의미

 

inplace = True이면 원래 dino_data에 drop 한 데이터를 넣어준다는 것이다

반대로 False를 사용한 후 dino_data를 불러오면 dino_data가 원래 데이터와 동일한 것을 알 수 있다.

 

plt.subplots(3,4,constrained_layout=False)
plt.suptitle('Dino\'s Dozen',fontsize = 20)
cnt = 1
for i in range(0,len(dino_data.columns),2):
    plt.subplot(3,4,cnt)
    
    x = dino_data.iloc[:,i]
    y = dino_data.iloc[:,(i+1)]
    plt.scatter(x,y,label = 'min',color = 'b',s = 10,marker ='*')
    plt.title('Dozen {}'.format(cnt))
    plt.xlabel('X(M = {:.2f} SD = {:.2f})'.format(np.mean(x),np.std(x)),fontsize = 12)
    plt.subplots_adjust(left = 0, bottom = 0, right = 1, top = 0.9, hspace = 0.5, wspace = 0.3)
    cnt+=1
plt.rcParams['figure.constrained_layout.use'] = True 

 

plt.subplots(3,4,constrained_layout=False)

- subplot의 기본 모양을 보여주는 것이다

- plt.subplot(rows, columns)

- constrained_layout = False로 설정해주는 이유는 그래프의 간격을 조절해주기 위해서 subplots_adjust 나 tight_layout을 사용할 것이기 때문에 True로 되어있으면 아래와 같은 오류가 뜨게 된다

 <ipython-input-6-7946e7238530>:12: UserWarning: This figure was using constrained_layout==True, but that is incompatible with subplots_adjust and or tight_layout: setting constrained_layout==False. plt.subplots_adjust(left = 0, bottom = 0, right = 1, top = 0.9, hspace = 0.5, wspace = 0.3) 

plt.suptitle - 12개의 그래프를 대표하는 데이터 제목을 정할 수 있다

나머지 부분은 [ 이전 게시물 ]과 거의 같고 

- title 부분에서 숫자 하나씩 높여주면서 설정해주고

- plot 대신에 scatter을 사용

- 가장 다른 점 plt.subplots_adjust(left = 0, bottom = 0, right = 1, top = 0.9, hspace = 0.5, wspace = 0.3)

 

plt.subplots_adjust 사용 ❌

 

plt.subplots_adjust 사용 ⭕️

보이는 것처럼 plt.subplots_adjust을 사용하면 그래프 간의 간격을 조절할 수 있는 것을 알 수 있다.

plt.subplots_adjust을 설정할 때 주의할 점은 left <= right & bottom <= top 이것을 지키지 않으면 아래와 같은 오류가 뜰 수 있다.

그리고 이 글을 쓰면서 코드를 만지작 만지작 해 본 결과

plt.rcParams ['figure.constrained_layout.use'] = True는 딱히 필요하지 않다 

원래는 그래프에 소제목이 다른 그래프에 겹쳐지거나  suptitle이 그래프에 겹치는 경우 때문에 여러 방법을 찾아본 것이었는데 없어도 

없어도 아래와 같이 멀쩡하게 잘 나오는 것을 알 수 있다

728x90

댓글