[학습목표]
여러개의 그래프를 한번에 그리고 범례를 표시할 수 있다.
라이브러리 임포트 및 그래프 설정
라이브러리 임포트
import matplotlib.pyplot as plt
그래프 설정
import matplotlib as mpl
# 그래프에 한글 설정
mpl.rcParams['font.family'] = 'NanumGothic'
# 그래프에 마이너스 기호 깨지는 문제 해결
mpl.rcParams['axes.unicode_minus'] = False
여러개의 그래프 한번에 그리기
import pandas as pd
df1 = pd.DataFrame({'월':[1,2,3,4,5],'몸무게':[80,78,75,73,70]})
df2 = pd.DataFrame({'월':[1,2,3,4,5],'몸무게':[60,62,59,55,54]})
df1
"""
월 몸무게
0 1 80
1 2 78
2 3 75
3 4 73
4 5 70
"""
df2
"""
월 몸무게
0 1 60
1 2 62
2 3 59
3 4 55
4 5 54
여러 개의 그래프 각각 그리기
- plt.show()로 그래프를 구분한다.
plt.plot(df1['월'],df1['몸무게'])
plt.show()
plt.plot(df2['월'],df2['몸무게'])
plt.show()


데이터가 다른 두 그래프 그리기
- plt.show()를 마지막에 한번만 사용한다.
#x축 틱 라벨
def fn_xtick(x):
x = str(x)
if x=='0' or x=='13':
return ''
else:
return x+'월'
xtick_label = pd.Series(range(0,14,1))
xtick_label = xtick_label.apply(fn_xtick)
xtick_label
"""
0
1 1월
2 2월
3 3월
4 4월
5 5월
6 6월
7 7월
8 8월
9 9월
10 10월
11 11월
12 12월
13
dtype: object
# y축 틱 라벨
def fn_ytick(x):
x = str(x)
return x+'kg'
ytick_label = pd.Series(range(30,95,5))
ytick_label = ytick_label.apply(fn_ytick)
ytick_label
"""
0 30kg
1 35kg
2 40kg
3 45kg
4 50kg
5 55kg
6 60kg
7 65kg
8 70kg
9 75kg
10 80kg
11 85kg
12 90kg
dtype: object
# 두 그래프 그리기
plt.plot(df1['월'],df1['몸무게'])
plt.plot(df2['월'],df2['몸무게'])
# 그래프 제목
plt.title('월별 몸무게 변화', size=15)
# 축 라벨
plt.xlabel('월', fontsize=12)
plt.ylabel('몸무게(kg)', fontsize=12)
# x축 틱 : 1월, 2월, 3월,...,12월
plt.xticks(range(0,14,1), labels=xtick_label)
# y축 틱 : 30kg, 35kg, 40kg, ..., 90kg
plt.yticks(range(30,95,5), labels=ytick_label)
# 그리드
plt.grid(ls=':')
plt.show()
범례 표시하기
- 여러 개의 플롯을 동시에 그리는 경우 각 그래프가 무엇을 표시하는지 보여주기 위해 범례를 추가한다.
1) 그래프에 레이블을 지정한다.(label=그래프명)
2) 범례를 표시한다. --> plt.legend() - 범례의 위치는 그래프에 따라 최적의 위치에 자동으로 표시된다.
# 두 그래프 그리기
plt.plot(df1['월'],df1['몸무게'], label='James')
plt.plot(df2['월'],df2['몸무게'], label='Amy')
plt.legend()
# 그래프 제목
plt.title('월별 몸무게 변화', size=15)
# 축 라벨
plt.xlabel('월', fontsize=12)
plt.ylabel('몸무게(kg)', fontsize=12)
# x축 틱 : 1월, 2월, 3월,...,12월
plt.xticks(range(0,14,1), labels=xtick_label)
# y축 틱 : 30kg, 35kg, 40kg, ..., 90kg
plt.yticks(range(30,95,5), labels=ytick_label)
# 그리드
plt.grid(ls=':')
plt.show()
범례 위치 지정
- plt.legend(loc=위치번호)
- plt.legend(loc=위치이름)
Location String Location Code =============== ============= 'best' 0 'upper right' 1 'upper left' 2 'lower left' 3 'lower right' 4 'right' 5 'center left' 6 'center right' 7 'lower center' 8 'upper center' 9 'center' 10 =============== =============
- plt.legend(loc=(x위치,y위치)) : 범례의 왼쪽 하단이 기준점.
범례 위치 번호 사용
# 두 그래프 그리기
plt.plot(df1['월'],df1['몸무게'], label='James')
plt.plot(df2['월'],df2['몸무게'], label='Amy')
plt.legend(loc=1)
#'best' 0
# 'upper right' 1
# 'upper left' 2
# 'lower left' 3
# 'lower right' 4
# 'right' 5
# 'center left' 6
# 'center right' 7
# 'lower center' 8
# 'upper center' 9
# 'center' 10
# 그래프 제목
plt.title('월별 몸무게 변화', size=15)
# 축 라벨
plt.xlabel('월', fontsize=12)
plt.ylabel('몸무게(kg)', fontsize=12)
# x축 틱 : 1월, 2월, 3월,...,12월
plt.xticks(range(0,14,1), labels=xtick_label)
# y축 틱 : 30kg, 35kg, 40kg, ..., 90kg
plt.yticks(range(30,95,5), labels=ytick_label)
# 그리드
plt.grid(ls=':')
plt.show()
범례 위치 이름 사용
Type Markdown and LaTeX: 𝛼2
# 두 그래프 그리기
plt.plot(df1['월'],df1['몸무게'], label='James')
plt.plot(df2['월'],df2['몸무게'], label='Amy')
plt.legend(loc='center')
# 그래프 제목
plt.title('월별 몸무게 변화', size=15)
# 축 라벨
plt.xlabel('월', fontsize=12)
plt.ylabel('몸무게(kg)', fontsize=12)
# x축 틱 : 1월, 2월, 3월,...,12월
plt.xticks(range(0,14,1), labels=xtick_label)
# y축 틱 : 30kg, 35kg, 40kg, ..., 90kg
plt.yticks(range(30,95,5), labels=ytick_label)
# 그리드
plt.grid(ls=':')
plt.show()
범례 x,y 위치 지정
- loc=(x,y)
왼쪽 아래 꼭지점 기준
# 두 그래프 그리기
plt.plot(df1['월'],df1['몸무게'], label='James')
plt.plot(df2['월'],df2['몸무게'], label='Amy')
plt.legend(loc=(1.01,0.8))
# 그래프 제목
plt.title('월별 몸무게 변화', size=15)
# 축 라벨
plt.xlabel('월', fontsize=12)
plt.ylabel('몸무게(kg)', fontsize=12)
# x축 틱 : 1월, 2월, 3월,...,12월
plt.xticks(range(0,14,1), labels=xtick_label)
# y축 틱 : 30kg, 35kg, 40kg, ..., 90kg
plt.yticks(range(30,95,5), labels=ytick_label)
# 그리드
plt.grid(ls=':')
plt.show()
범례 속성 지정
- 열 개수 : plt.legend(ncol=열개수)
- 폰트 사이즈 : plt.legend(fontsize=폰트사이즈)
- 테두리 : plt.legend(frameon=True/False)
- 음영 : plt.legend(shadow=True/False)
- 바탕색 : plt.legend(facecolor=색상)
- 테두리색 : plt.legend(edgecolor=색상)
# 두 그래프 그리기
plt.plot(df1['월'],df1['몸무게'], label='James')
plt.plot(df2['월'],df2['몸무게'], label='Amy')
plt.legend(ncol=2,fontsize=12,shadow=True,facecolor='ivory',edgecolor='k')
# 그래프 제목
plt.title('월별 몸무게 변화', size=15)
# 축 라벨
plt.xlabel('월', fontsize=12)
plt.ylabel('몸무게(kg)', fontsize=12)
# x축 틱 : 1월, 2월, 3월,...,12월
plt.xticks(range(0,14,1), labels=xtick_label)
# y축 틱 : 30kg, 35kg, 40kg, ..., 90kg
plt.yticks(range(30,95,5), labels=ytick_label)
# 그리드
plt.grid(ls=':')
plt.show()
'파이썬 > 시각화 matplot' 카테고리의 다른 글
[matplot] 위치, 크기 지정하여 플롯 그리기 (0) | 2023.05.15 |
---|---|
pyplot으로 서브플롯 그리기 plt.pyplot (0) | 2023.05.15 |
축의 범위와 눈금 지정 (0) | 2023.05.15 |
제목, 축 레이블, 그리드 (0) | 2023.05.15 |
한글폰트사용, 색상, 마커, 선 (0) | 2023.05.15 |