위와 같이 컬럼의 개수가 많을 때, 이미지를 하나씩 보면 한눈에 보기 어렵다. 그래서 한번에 여러 그래프를 보는 방법을 정리한다.
테스트 데이터 생성
우선, 테스트 데이터를 만들었다.
import pandas as pd
import matplotlib.pyplot as plt
test1 = [1,2,2,3,3,3,4,4,4,4,5,5,5,5,5]
test2 = [1,3,3,3,5,5,5,5,5,7,7,7,7,7,7]
test_df = pd.DataFrame()
test_df['test1'] = test1
test_df['test2'] = test2
test_df['test3'] = test1
test_df['test4'] = test2
test_df['test5'] = test1
test_df['test6'] = test2
test_df['test7'] = test1
test_df['test8'] = test2
이렇게 실행하면 그래프가 스크롤로 많이 넘어가게 되어 보기가 힘들다.
columns = test_df.columns
for column in columns:
plt.hist(test_df[column])
plt.show()

.... 생략

plt.subplots 사용하기
plt.subplots(1,2) 에서 리턴하는 f, axes 에 대해서 살펴보면,
f 는 전체 이미지에 대한 정보이며, axes 는 각각 위치에 대한 정보를 나타낸다.
리턴 값의 순서가 정해져 있으므로, 변수 명에 대한 것보다 순서에 맞게 사용하는 것이 중요하다.
- f.set_size_inches 함수 : 하나의 이미지로 출력할 때의 이미지 사이즈를 의미한다.
- plt.subplots_adjust 함수 : 그래프 간의 간격을 조정할 때 크기를 지정해준다.
위 두가지를 적절히 사용해주자.
f,axes = plt.subplots(2,2) # 가로, 세로 이미지의 개수 설정
f.set_size_inches((10, 5)) # 전체 이미지의 크기 설정
plt.subplots_adjust(wspace = 0.25, hspace = 0.25) # 너비여백, 높이여백 설정
axes[0][0].hist(test_df['test1'])
axes[0][1].hist(test_df['test2'])
axes[1][0].hist(test_df['test3'])
plt.show()
함수로 정의
r(row), c(col) 사이즈로 만들어서 입력값을 준다.
axes 에 접근할 때 axes[0][0] 이와 같이 접근한다. row, col 개수를 설정하면서 오류가 많이 났는데, subplots의 개수는 그려지는 그래프의 개수보다 많아야하는 것 같다.
- hist 함수 : hist 말고 plot 함수를 써보니 되던데, 적절히 수정해서 사용해야겠다.
- set_title 함수 : 그래프의 title 을 함께 출력하면 시각적으로 보기가 편하다.
def showHist(df, r, c):
f,axes = plt.subplots(r,c)
f.set_size_inches((20, 10))
plt.subplots_adjust(wspace = 0.5, hspace = 0.5)
i = 0
for column in df.columns.tolist():
axes[i//c][i%c].hist(df[column])
axes[i//c][i%c].set_title('test'+str(i+1))
i = i + 1
plt.show()
showHist(test_df, r=3, c=3)
반응형
'IT > 인공지능' 카테고리의 다른 글
[matplotlib] 데이터 별 시각화 처리 (0) | 2022.08.12 |
---|---|
[Pandas] DataFrame 기초 (0) | 2022.08.11 |
[Pandas] Series 기초 (0) | 2022.08.10 |
colab에 접속하여 tensorflow, numpy, pandas, matplotlib 버전 출력해 보기 (0) | 2022.06.06 |
댓글