하나의 화면에 여러개의 그래프를 표시해야 할 때가 있습니다.
예를 들어볼까요.
1반부터 4반까지 있을 때,
4개의 학급의 과목점수 영어/수학/국어/사회 등의 점수분포를 비교해야 된다고 해보죠.
표로 각 반별 과목별 점수의 평균을 표현하게 되면 이렇게 되겠죠.
1반 | 2반 | 3반 | 4반 | |
영어 | 80 | 82 | 83 | 73 |
수학 | 67 | 73 | 82 | 91 |
국어 | 73 | 72 | 83 | 82 |
사회 | 78 | 78 | 98 | 97 |
이러한 정보의 그래프를 표처럼 나타낼 수 있는 방법이 있습니다.
위의 그림을 보시면
각 반별 과목의 점수를 비교하기 쉽게 그려놓은 것을 볼 수 있습니다.
이렇게 그래프를 그릴 수 있게 해주는 것이
오늘 정리해볼 subplot이라는 함수입니다.
subplot에서 꼭 기억하셔야 될 것은
subplot(행, 열, 순서)라는 것입니다.
코드로 설명드리면 더 이해가 쉬울 것 같네요.
우선 그래프를 그리기 위한 기본 library를 import 합니다.
1
2
|
from matplotlib import pyplot as plt
import seaborn as sns
|
cs |
아래 코드를 보시면,
for 문 안에 plt.subplot이 들어 있는 것을 보실 수 있습니다.
아까 subplot은, (행, 열, 순서) 로 값이 들어간다고 했습니다.
subplot(2, 2, i+1)
위와 같이 표현되어 있으니, 2x2 모양의 그래프가 그려지는 것이죠.
1
2
3
4
5
6
7
8
9
10
|
glist=['영어','수학','국어','사회']
plt.figure(figsize=(10,8))
sns.set(font="NanumGothic",
rc={"axes.unicode_minus":False, 'figure.figsize':(12,10)},
style='whitegrid')
for i in range(len(glist)):
plt.subplot(2,2,i+1)
sns.boxplot(x=test['학급'] , y=test[glist[i]] )
|
cs |
아까 위에서 보여드렸던 그림과 같이 나오는 것입니다.
i 는 glist의 length만큼 증가할 것이고,
순서대로 영어, 수학, 국어, 사회 과목에 대한 그래프를 그려주는 것입니다.
만약 그래프를 한줄로 즉 1x4의 형태로 그려주고 싶다면 어떻게 바꿔주면 될까요?
subplot(1, 4, i+1)
로 변경해주시면 됩니다.
즉, 행이 1줄, 열이 4줄이라는 뜻이겠죠.
그러면 그래프는 아래와 같이 나올 겁니다.
마지막으로 퀴즈!
그렇다면 그려야할 그래프는 과목의 개수처럼 4개인데,
subplot(2, 3, i+1)
위와 같이 subplot의 값을 넣어주면 어떻게 될까요?
위의 그럼 처럼 나머지 5, 6번에 해당하는 그래프들은
그냥 빈칸(공백)으로 처리가 되는 것을 볼 수 있습니다.
'IT > 파이썬' 카테고리의 다른 글
cmap을 활용한 산점도 그리기(Label Encoder활용) (0) | 2022.09.22 |
---|---|
[그래프]산점도에 label 추가하기 (0) | 2021.09.17 |
if문과 apply함수로 파생변수 만들기 (0) | 2021.08.04 |
[그래프] for문으로 산점도 그리기 plt.scatter 활용 (0) | 2021.08.02 |
Bayesian optimization (0) | 2021.06.29 |