[TIL] Matplotlib으로 히스토그램 꾸미기

Hanna Kim·2020년 12월 8일
1
post-thumbnail

저번 글에서 전반적인 차트 꾸미기를 다뤘는데, 이번에는 히스토그램에 필요한 내용만 적어보려고 한다.

주피터노트북 세팅

FontProperties안의 명령어는 각자 환경에 맞게 수정하면 된다. 원하는 폰트도 속성의 영어 이름을 복사해오면 사용할 수 있다.

import pandas as pd
import numpy as np
import seaborn as sns
import matplotlib
import matplotlib.pyplot as plt

%matplotlib inline
from matplotlib import font_manager, rc
font_name = font_manager.FontProperties(fname="c:/Windows/Fonts/NanumSquareB.ttf").get_name()
rc('font', family=font_name)

기본 플롯 구성

num = 10
X = np.arange(num)
W = np.random.randint(1,num*2,num)

plt.hist(X, bins=num, weights = W)


(못생긴 차트 등장..)

바 꾸미기

일단 히스토그램 바의 색깔을 바꾸고 싶다. (못생긴 파랑 저리가..)

plt.hist(X, bins=num, weights = W
         ,color = '#54CAEA' # 바 색 변경
        )


바를 구분해줄 필요도 있다. 지금은 하나로 뭉쳐져서 눈에 잘 들어오지 않는다. edgecolor를 지정해주면 된다. 이때 linewidth를 써서 굵기도 변경할 수 있다.

plt.hist(X, bins=num, weights = W
         ,color = '#54CAEA' # 바 색 변경
         ,edgecolor = 'whitesmoke' # 선으로 구분
         ,linewidth = 1.4 # 선 굵기 설정
         )

특정 구간 강조하기

그런데 만약 한 구간만 강조해서 보여주고 싶다면, 색깔로 구분해서 칠해주는 게 좋아보인다. 예를 들어 여덟번째 구간만 노란색, 나머지는 하늘색으로 칠하고 싶다면 다음과 같은 코드를 쓰면 된다.
plt.hist앞에 n, bins, patches도 꼭 같이 써줘야한다.

n, bins, patches = plt.hist(X, bins=num, weights = W
         ,color = '#54CAEA' # 바 색 변경
         ,edgecolor = 'whitesmoke' # 선으로 구분
         ,linewidth = 1.4 # 선 굵기 설정
         )

patches[7].set_facecolor('gold') # 구간 선택

위의 원리를 사용하면 여러 구간의 색을 for 문으로 따로 지정하는 것도 가능하다.

n, bins, patches = plt.hist(X, bins=num, weights = W
         ,color = '#54CAEA' # 바 색 변경
         ,edgecolor = 'whitesmoke' # 선으로 구분
         ,linewidth = 1.4 # 선 굵기 설정
         )


for i in range(7, len(patches)): # 8번째부터 마지막 구간을
    patches[i].set_facecolor('gold') # 노란색으로 표시

저번 글에서 적었던 전반적인 차트 꾸미기를 적용하면 최종 결과물과 코드는 이렇다.

n, bins, patches = plt.hist(X, bins=num, weights = W
         ,color = '#54CAEA' # 바 색 변경
         ,edgecolor = 'whitesmoke' # 선으로 구분
         ,linewidth = 1.4 # 선 굵기 설정
         )

patches[7].set_facecolor('gold')
    
plt.title('유저당 댓글 수', color = "#00517C", size = 25) #제목 표시

plt.gca().spines['right'].set_visible(False) #오른쪽 테두리 제거
plt.gca().spines['top'].set_visible(False) #위 테두리 제거
plt.gca().spines['left'].set_visible(False) #왼쪽 테두리 제거
plt.yticks(ticks= []) #y축 tick 제거
plt.gca().set_facecolor('#E6F0F8') #배경색
plt.gca().spines['bottom'].set_color('#00517C') #x축 색상
plt.xticks(color='#00517C', fontsize =15) #xticks 색상과 폰트 크기 조정

profile
쌓으며 배우는 중

0개의 댓글