코딩

파이썬 그래프 범례 내 맘대로 수정하는 법 (matplotlib)

Bella0204 2020. 12. 18.

오늘 목표

오늘은 파이썬 그래프 범례를 여러가지 스타일로 바꾸어 보는 방법을 알아 보겠습니다. 

 

 

라이브러리 가져오기

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)

 

파이썬 엑셀 데이터로 라인 그래프 그리기 with 평균, 표준편차 (matplotlib)

오늘 코딩 목표 파이썬 시각화 라이브러리 중에 matplotlib를 이용하여 평균과 표준편차가 있는 라인 그래프를 그려보겠습니다. 그런 뒤 다양하게 그래프를 수정해 보겠습니다. 아래 왼쪽의 엑셀

dotorimj2.tistory.com

파이썬 그래프에 한글 제목과 범례 사용하는 법 (matplotlib)

 

파이썬 그래프에 한글 제목과 범례 사용하는 법

오늘 목표 지난 포스팅에서 연속적인 엑셀 데이터를 이용하여 평균과 표준편차를 나타내는 라인 그래프를 그렸었는데요. 오늘은 그 데이터와 그래프를 그대로 가져와서 한글로 차트 제목, 축

dotorimj2.tistory.com

 

반응형

댓글