TIL - 250429

AnalytiCode·2025년 4월 29일

프로젝트 마무리가 곧이당..!!

파트 분배해서 진행하는데 나는 대시보드 만들어보기루 함
python basic에서 다뤄주셨던 거 보고 고고링..

python_basic_4

그래프 그리기

rcParams

rcParams: Matplotlib에서 그래프의 기본 스타일을 설정하는 데 사용되는 설정값들을 포함하는 딕셔너리
rc= runtime configuration의 약자,
Matplotlib에서 그래프를 그릴 때의 전반적인 스타일 조정 가능.
ex)폰트 크기, 색상, 축의 스타일, 그래프의 크기 등

rcParams를 사용하면 Matplotlib 그래프의 스타일을 전역적으로 바꿀 수 있기 때문에, 매번 그래프를 그릴 때마다 일일이 스타일을 지정하지 않고도 일관된 스타일을 유지할 수 있다.

# 1. 기본 스타일 설정
plt.style.use('default')
plt.rcParams['figure.figsize'] = (4, 3)
plt.rcParams['font.size'] = 12

fig, (ax1, ax2) = plt.subplots(1, 2)  # 1행 2열로

plt.style.use('default'): Matplotlib 스타일을 '기본(default)' 모드로 되돌려라는 뜻
default 이외의 테마: 'ggplot', 'seaborn', 'bmh'

subplots

subplots() = "도화지 하나 만들고, 그 안에 그래프 그릴 공간도 같이 만들어라"

fig, (ax1, ax2) = plt.subplots(1, 2)  # 1행 2열로

fig는 전체 그림. 별로 손댈 일 잘 없음.
ax1은 그래프를 그리는 진짜 작업 공간. 여기다가 .plot(), .bar(), .scatter() 이런거 붙임

set_, tick_params(), twin(), set_zorder(), patch

# 3. 그래프 그리기
fig, ax1 = plt.subplots()

ax1.plot(x, y1, '-s', color='green', markersize=7, linewidth=5, alpha=0.7, label='Price')
ax1.set_ylim(0, 18)
ax1.set_xlabel('Year')
ax1.set_ylabel('Price ($)')
ax1.tick_params(axis='both', direction='in')

# x축 공유(즉, 이중축 사용 의미)
ax2 = ax1.twinx()
ax2.bar(x, y2, color='purple', label='Demand', alpha=0.7, width=0.7)
ax2.set_ylim(0, 18)
ax2.set_ylabel(r'Demand ($\times10^6$)')
ax2.tick_params(axis='y', direction='in')

#레이블 위치
# 클수록 가장 위쪽에 보여진다고 생각하면 됨.
ax2.set_zorder(ax1.get_zorder() + 10)
#ax1.set_zorder(ax2.get_zorder() + 20)
ax1.patch.set_visible(False)

ax1.legend(loc='upper left')
ax2.legend(loc='upper right')

plt.show()

set_

"왜 굳이 set_이 붙었냐?"
Matplotlib에서 명령어를 명확하게 구분해야 함(get vs set)

getylim() → y축 범위를 가져오는 함수
set_ylim() → y축 범위를 설정하는 함수
이렇게 `get
vsset_`이 깔끔하게 구분돼 있어서,
"읽기 전용(get)"이냐 "수정용(set)"이냐를 바로 알 수 있게 해 놓은 것.

tick_params(axis='both', direction='in')

tick = 축에 붙어 있는 짧은 선 (숫자 옆에 붙어 있는 작은 꼬챙이 같은 거)
axis='both' = x축 + y축 둘 다 설정한다는 의미
direction='in' = 눈금선을 그래프 안쪽 방향으로 향하게 한다는 뜻

"x축과 y축의 눈금(tick) 방향을 안쪽으로(in) 향하게 설정

twin()

twinx() = 같은 x축 쓰고, 다른 y축 추가.
twiny() = 같은 y축 쓰고, 다른 x축 추가

set_zorder()

그림(레이어)끼리 위아래 순서(depth)를 정하는 함수
zorder 값이 클수록 더 위쪽에 그려진다. (z축 방향 위로 올라가는 거라 생각)
ax2.set_zorder(ax1.get_zorder() + 10) -> ax2가 위에 올라감
#ax1.set_zorder(ax2.get_zorder() + 20)

patch

0개의 댓글