오랜만입니다~ 꽁냥이에요. 이번 포스팅에서는 Matplotlib에서 그래프의 배경색(Face Color, Background Color)을 조절하는 방법에 대해서 알아보겠습니다.
Matplotlib의 배경은 다음과 같이 Figure와 Axes 두 가지 요소로 이루어져 있습니다.
간단하게 말하면 Axes에서 실제 그래프가 그려지고 Axes 바깥 영역을 Figure라고 합니다.
따라서 그래프의 배경색(Face Color, Background Color)은 Figure와 Axes 영역 따로 설정할 수 있습니다. 이에 대해 각각 알아보겠습니다.
- 목차 -
1. Figure 배경색(Background Color) 설정하기
2. Axes 배경색(Background Color) 설정하기
1. Figure 배경색(Background Color) 설정하기
Figure의 배경색(Face Color, Background Color)은 세 가지 방법을 이용하여 바꿀 수 있습니다. 첫 번째 방법은 Figure를 생성할 때 facecolor인자를 이용하여 바꾸는 방법입니다.
fig = plt.figure(figsize=(8,8), facecolor='blue')
두 번째 방법과 세 번째 방법은 Figure를 생성하고 set_facecolor, patch.set_facecolor를 이용하여 바꾸는 방법입니다.
fig = plt.figure(figsize=(8,8))
fig.set_facecolor('blue') ## 또는 fig.patch.set_facecolor('blue')
아래 코드를 실행하면 Figure 배경색이 파란색으로 바뀌는 것을 알 수 있습니다. 참고로 Figure 배경의 투명도를 바꾸기 위해서 patch.set_alpha를 사용했습니다.
fig = plt.figure(figsize=(8,8), facecolor='blue')
'''
또는
fig = plt.figure(figsize=(8,8))
fig.set_facecolor('blue') ## 또는 fig.patch.set_facecolor('blue')
'''
fig.patch.set_alpha(0.3) ## 투명도 설정
ax = fig.add_subplot()
ax.plot([1,2,3], [3,2,1])
# x, y 눈금과 라벨을 하얀색으로 설정
ax.tick_params(axis='x', colors='white')
ax.tick_params(axis='y', colors='white')
plt.show()
2. Axes 배경색(Background Color) 설정하기
- 전체 배경색 -
이번엔 Axes 배경색을 바꾸는 방법을 알아보겠습니다. Figure에서 살펴본 방법 중에서 patch.set_faceolor를 이용하면 됩니다. 꽁냥이는 Axes 색상을 Hex 코드로 설정했습니다.
fig = plt.figure(figsize=(8,8), facecolor='blue')
fig.patch.set_alpha(0.3) ## 투명도 설정
ax = fig.add_subplot()
ax.plot([1,2,3], [3,2,1])
ax.patch.set_facecolor('#a5e6b6') ## axes 배경색
# x, y 눈금과 라벨을 하얀색으로 설정
ax.tick_params(axis='x', colors='white')
ax.tick_params(axis='y', colors='white')
plt.show()
Axes 배경색(Background Color) 또한 patch.set_alpha를 이용하여 투명도를 설정할 수 있습니다. 단 Axes 배경색이 투명해짐에 따라 Figure 배경색에 가까워짐을 주의하세요.
fig = plt.figure(figsize=(8,8), facecolor='blue')
fig.patch.set_alpha(0.3) ## 투명도 설정
ax = fig.add_subplot()
ax.plot([1,2,3], [3,2,1])
ax.patch.set_facecolor('#a5e6b6') ## axes 배경색
ax.patch.set_alpha(0.3) ## axes 투명도
# x, y 눈금과 라벨을 하얀색으로 설정
ax.tick_params(axis='x', colors='white')
ax.tick_params(axis='y', colors='white')
plt.show()
- 부분 배경색 -
앞에서는 Axes의 전체 배경색을 바꾸는 방법에 대해서 알아보았는데요. Axes의 부분(사각 영역) 배경색을 바꾸는 방법에 대해서 알아보겠습니다.
먼저 ax.axvspan(ax.axhspan)을 이용하는 방법입니다. 이는 주어진 범위에 대하여 x축(y축)과 수직인 영역의 색상을 바꿀 수 있습니다. 꽁냥이는 배경색(facecolor)을 회색, 투명도(alpha)를 0.6으로 지정했습니다.
fig = plt.figure(figsize=(8,8), facecolor='white')
ax = fig.add_subplot()
ax.plot(range(10))
ax.axvspan(1,3, facecolor='gray', alpha=0.6) # x가 1~3에 해당하는 부분 배경색 설정
# x축, y축 최대 표현 범위
ax.set_xlim(min(range(10)), max(range(10)))
ax.set_ylim(min(range(10)), max(range(10)))
plt.show()
이번엔 부분 사각형 영역의 배경색을 바꿔 보겠습니다. 이때에는 patches.Rectangle이라는 클래스를 add_patch를 이용하여 추가하는 방법을 이용합니다.
import matplotlib.patches as patches
fig = plt.figure(figsize=(8,8), facecolor='white')
ax = fig.add_subplot()
ax.plot(range(10))
# x축, y축 최대 표현 범위
ax.set_xlim(min(range(10)), max(range(10)))
ax.set_ylim(min(range(10)), max(range(10)))
## (1, 1)에서 시작하여 가로 3, 세로 2 인 사각형 영역의 배경색
ax.add_patch(
patches.Rectangle(
(1, 1),
3,
2,
facecolor = 'red',
fill=True,
alpha=0.5
) )
plt.show()
이번 포스팅에서는 Matplotlib에서 배경색을 바꾸는 방법에 대해서 알아보았습니다. 배경색은 특정 영역을 강조하고 싶을 때 활용되므로 오늘 배운 내용을 알아두시면 써먹을 곳이 많습니다. 지금까지 꽁냥이의 글 읽어주셔서 감사드리며 이상 포스팅 마치겠습니다.
'데이터 분석 > 시각화' 카테고리의 다른 글
[Matplotlib] fill_between을 이용하여 두 곡선 사이 영역 색칠하기 (394) | 2022.05.24 |
---|---|
[Matplotlib] mplcyberpunk 모듈 - 'cyberpunk' 스타일 소개 (404) | 2022.05.24 |
bar_chart_race 패키지로 움직이는 막대 그래프(Bar Chart, 바 차트) 그려보기 with Python (397) | 2022.04.28 |
[Matplotlib] y축 눈금 숫자 형식(Number Format) 바꾸기(set_yticklabels) 백분율(%), 천단위 콤마(,), 과학적 표기(Scientific Notation) 변경 (425) | 2022.04.19 |
Matplotlib - 로그 눈금(Log Scale) 설정하기(semilogx, semilogy, xscale, yscale) (402) | 2022.04.19 |
댓글