오늘 목표
오늘은 파이썬 그래프 범례를 여러가지 스타일로 바꾸어 보는 방법을 알아 보겠습니다.
라이브러리 가져오기
import matplotlib
from matplotlib import font_manager,rc #한글 폰트 입력을 위한 라이브러리
import matplotlib.pyplot as plt #그래프 그리기 위한 라이브러리
import matplotlib.patches as mpatches #범례 그리기 위한 라이브러리
import matplotlib.lines as mlines #범례 그리기 위한 라이브러리
%matplotlib inline
데이터 입력하기
데이터를 직접 값만 입력해도 되고 엑셀에 있는 자료를 가져와도 됩니다. 오늘은 리스트형태로 평균과 표준편차를 입력해 보겠습니다. yerr = [(마이너스 방향),(플러스 방향)] 인데, 예제에서는 플러스 방향의 오차막대만 표시하고 싶어서 플러스 방향에만 표준편차를 입력했습니다. 마이너스 방향도 표시하고 싶으면, 마이너스 방향에서 값을 입력해 주면 됩니다. 글 마지막에 추가적으로 엑셀 데이터를 이용하여 그래프 범례를 표시할 때만 할 수 있는 방법이 있어서 코드만 올려 보겠습니다.
x = [1,2,3] # x 축값
y= [7,4,10] # y 축값
yerr = [(0,0,0,),(1,1,2)] # 표준편차
평균과 표준편차 라인 그래프 그리기
ax.bar(x,y,yerr=yerr, align='center', color = ('red','navy','grey'), alpha=1,
edgecolor = 'black',ecolor= 'black',capsize=7)
plt.xlabel('x 축 제목', fontsize = 12)
plt.ylabel('y 축 제목', fontsize = 12)
plt.title('차트 제목', fontsize = 20, color ='red')
plt.bar(x축, y축, yerr= 표준편차)를 지정해 주면 표준편차가 표시된 그래프가 그려지고요,
color에 순서대로 원하는 색을 선택하면 됩니다.
alpha는 투명도를 조절하고요 숫자가 작아질 수록 투명해집니다.
edgeccolor는 바 그래프의 테두리 색이고요,
ecolor는 에러바 색입니다.
capsize는 에러바 캡의 크기를 조절할 수 있습니다.
그래프 범례항목 내 맘대로 바꾸기
범례항목 = mpatches.Patch(color ='바그래프 색', label = '범례항목')
mpatches는 박스 형태의 범례를 만들 수 있습니다.
마지막 줄의 plt.legend(handles =[원하는 범례 항목 순서]) 코드로 원하는 범례 항목 순서를 지정하여 내 맘대로 순서를 정할 수 있습니다.
# 범례 지정하기
variable_x = mpatches.Patch(color='red',label='그룹 X')
variable_y = mpatches.Patch(color='navy',label='그룹 y')
variable_z = mpatches.Patch(color='gray',label='그룹 z')
#범례 나타내기
plt.legend(handles=[variable_x, variable_y, variable_z])
코드를 실행시키면 왼쪽과 같은 그래프의 범례가 만들어 집니다. 박스 형태고 그룹의 색과 매칭된 범례를 볼 수 있습니다.
범례 위치, 테두리 여부와 글씨 크기 조절하기
loc = '원하는 위치' 를 이용하여 그래프 내 원하는 위치로 옮길 수 있습니다.
frameon = True 는 범례상자의 테두리를 만듭니다. 테두리 없애고 싶으면 False라고 하면 됩니다.
fontsize로 범례 글씨 크기 조정할 수 있습니다.
plt.legend(handles=[variable_x, variable_y, variable_z],
loc ='upper center', frameon=False, fontsize = 10)
테두리가 없는 범례가 차트영역 가운데에 위치하도록 나타냈습니다.
loc = '원하는 위치' 에서
원하는 위치는 아래에서 골라서 쓰면 됩니다.
best
upper right
upper left
lower right
lower left
center left
center right
lower center
upper center
center
범례 배경색과 글씨 색 바꾸기
plt.legend(handles=[variable_x, variable_y, variable_z]
, loc ='best', frameon=True, fontsize = 10,
facecolor='lightgrey', labelcolor='black')
추가적으로
facecolor ='원하는 배경색'
labelcolor ='원하는 글자색'
이렇게 코딩하여 범례의 배경색과 글자색을 바꿀 수 있습니다.
컬러 코드는 여기서 확인.
아래 예제는 배경색은 옅은 회색이고 글자색은 검은색으로 했습니다.
범례 그래프 밖으로 보내기
코드는 위와 동일하고 한 가지만 추가했습니다.
bbox_to_anchor=(좌우 조정, 위아래 조정)
좌우 조정과 위아래 조정에 숫자를 넣어 범례를 원하는 위치로 조정할 수 있습니다.
plt.legend(handles=[variable_x, variable_y, variable_z]
, loc ='best', frameon=True, fontsize = 10,
facecolor='lightgrey', labelcolor='black',
bbox_to_anchor=(1.25, 0.3))
왼쪽은 (1.25, 1) 이고 오른쪽은 (1.25, 0.3)으로 좌표를 설정했을 때의 범례 위치입니다.
엑셀 데이터 가져와서 그래프 범례 항목 스타일 내 맘대로 만들기
#범례 지정하기
variable_x = mpatches.Patch(color='red',label='변수 x')#박스형태
variable_y = mpatches.Patch(color='blue',label='변수 y')#박스형태
variable_z = mpatches.Patch(color='green',label='변수 z')#박스형태
red_line = mlines.Line2D([], [], color='red', linestyle ='--', label='phase line')#라인형태
green_line = mlines.Line2D([], [], color='green', linestyle ='--', label='zero line')#라인형태
blue_line = mlines.Line2D([], [], color='blue', marker='*',
markersize=15, label='extra')#마커형태
#범례 나타내기
plt.legend(handles=[variable_x, variable_y, variable_z,red_line, green_line,blue_line],
loc ='upper right', frameon=True, fontsize = 12,
facecolor='white', labelcolor='black',
bbox_to_anchor=(1, 1))
오른쪽 그래프를 그리는 설명은 여기에서 확인하실 수 있습니다.
범례를 내 맘대로 지정할 때 두 가지 방법을 이용해서 만들 수 있습니다.
mpatches.Patch는 박스형태의 범례항목을,
mlines.Line2D는 라인형태와 마커형태의 범례항목을 만들 수 있습니다.
>> 같이 읽으면 좋은 글
파이썬 엑셀 데이터로 라인 그래프 그리기 with 평균, 표준편차 (matplotlib)
파이썬 그래프에 한글 제목과 범례 사용하는 법 (matplotlib)
'코딩' 카테고리의 다른 글
엑셀 파일 csv로 변환 코드 (tsv, sto, xlsx ↔ csv) (0) | 2021.06.17 |
---|---|
데이터 마이닝 :: 케이무크 무료 대학 강의 (0) | 2021.06.12 |
엑셀 파일 CSV 변환, 파이썬으로 파일 불러오기, 데이터 추출 3가지 방법, 그래프 그리기 (pd.read_csv VS np.loadtxt) (1) | 2021.05.22 |
파이썬 그래프에 한글 제목과 범례 사용하는 법 (0) | 2020.12.18 |
파이썬 엑셀 데이터로 라인 그래프 그리기 with 평균, 표준편차 (matplotlib) (0) | 2020.12.17 |
댓글