저번 글에서 전반적인 차트 꾸미기를 다뤘는데, 이번에는 히스토그램에 필요한 내용만 적어보려고 한다.
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 색상과 폰트 크기 조정