"기온 데이터로 먼저 연습해보자."
지윤이 민수에게 말했습니다. 실제 매출 데이터를 바로 쓰기 전에 구조를 익혀두는 게 좋다고 생각했습니다. 월별 기온 데이터는 누구나 직관적으로 이해할 수 있었습니다.
이 PART부터 차트 제목에 한글이 등장합니다. 한글이 깨져 보이면 PART 01 03장 "한글 폰트 설정"을 참고하세요.
px.line() 기본 사용법
px.line()은 데이터프레임을 받아 선 그래프를 만듭니다. 가장 기본적인 형태는 x와 y만 지정하는 것입니다.
# 파일: line_basic.pyimport plotly.express as pximport pandas as pd# 월별 평균 기온 데이터df = pd.DataFrame({ "month": list(range(1, 13)), "temp": [2.3, 4.1, 9.2, 15.3, 20.1, 24.6, 27.8, 28.2, 23.1, 16.4, 9.0, 3.5]})fig = px.line( df, x="month", y="temp", title="월별 평균 기온")fig.show()
선이 데이터 포인트를 부드럽게 연결합니다. 마우스를 올리면 각 달의 기온이 표시됩니다.
마커 표시
선만 있으면 어디에 실제 데이터가 있는지 불분명할 때가 있습니다. markers=True를 추가하면 각 데이터 포인트에 점이 표시됩니다.
# 파일: line_basic.pyimport plotly.express as pximport pandas as pddf = pd.DataFrame({ "month": list(range(1, 13)), "temp": [2.3, 4.1, 9.2, 15.3, 20.1, 24.6, 27.8, 28.2, 23.1, 16.4, 9.0, 3.5]})fig = px.line( df, x="month", y="temp", title="월별 평균 기온", markers=True)fig.show()
다중 라인
여러 그룹의 데이터를 하나의 차트에 그리고 싶을 때는 color 파라미터를 사용합니다. color에 지정한 컬럼의 고유값마다 서로 다른 색상의 라인이 생깁니다.
# 파일: line_multi.pyimport plotly.express as pximport pandas as pd# 두 도시의 월별 기온df = pd.DataFrame({ "month": list(range(1, 13)) * 2, "temp": [ 2.3, 4.1, 9.2, 15.3, 20.1, 24.6, 27.8, 28.2, 23.1, 16.4, 9.0, 3.5, # 서울 5.8, 7.2, 11.3, 16.5, 21.0, 25.3, 28.5, 29.1, 24.2, 18.6, 12.4, 7.1 # 부산 ], "city": ["서울"] * 12 + ["부산"] * 12})fig = px.line( df, x="month", y="temp", color="city", markers=True, title="서울 vs 부산 월별 평균 기온")fig.show()
범례가 자동으로 생성됩니다. 범례의 도시 이름을 클릭하면 해당 라인이 숨겨지고 다시 클릭하면 나타납니다.
line_dash로 선 스타일 구분
색상만으로 구분이 어려울 때, 특히 흑백 인쇄를 고려해야 할 때는 line_dash 파라미터로 선 스타일을 다르게 지정합니다.
# 파일: line_dash.pyimport plotly.express as pximport pandas as pddf = pd.DataFrame({ "month": list(range(1, 13)) * 2, "temp": [ 2.3, 4.1, 9.2, 15.3, 20.1, 24.6, 27.8, 28.2, 23.1, 16.4, 9.0, 3.5, 5.8, 7.2, 11.3, 16.5, 21.0, 25.3, 28.5, 29.1, 24.2, 18.6, 12.4, 7.1 ], "city": ["서울"] * 12 + ["부산"] * 12})fig = px.line( df, x="month", y="temp", color="city", line_dash="city", markers=True, title="서울 vs 부산 월별 평균 기온 (선 스타일 구분)")fig.show()
line_dash에 컬럼명을 지정하면 각 그룹에 실선, 점선, 대시선 등을 자동으로 배정합니다.
실전: 월별 기온 데이터 완성
지윤이 연습용 코드를 정리했습니다. x축 레이블을 월 이름으로 바꾸고, 레이아웃도 다듬었습니다.
# 파일: line_temp_final.pyimport plotly.express as pximport pandas as pdmonths = ["1월", "2월", "3월", "4월", "5월", "6월", "7월", "8월", "9월", "10월", "11월", "12월"]df = pd.DataFrame({ "month": months * 2, "temp": [ 2.3, 4.1, 9.2, 15.3, 20.1, 24.6, 27.8, 28.2, 23.1, 16.4, 9.0, 3.5, 5.8, 7.2, 11.3, 16.5, 21.0, 25.3, 28.5, 29.1, 24.2, 18.6, 12.4, 7.1 ], "city": ["서울"] * 12 + ["부산"] * 12})# month 컬럼을 카테고리로 지정해 순서 유지df["month"] = pd.Categorical(df["month"], categories=months, ordered=True)df = df.sort_values("month")fig = px.line( df, x="month", y="temp", color="city", markers=True, title="2024년 서울·부산 월별 평균 기온", labels={"month": "월", "temp": "기온 (°C)", "city": "도시"})fig.update_layout( xaxis_title="월", yaxis_title="기온 (°C)", legend_title="도시")fig.show()
px.line() 주요 파라미터 정리
| 파라미터 | 설명 | 예시 |
|---|---|---|
x |
x축 컬럼명 | x="month" |
y |
y축 컬럼명 | y="temp" |
color |
그룹별 색상 구분 컬럼 | color="city" |
line_dash |
그룹별 선 스타일 구분 컬럼 | line_dash="city" |
markers |
데이터 포인트 마커 표시 | markers=True |
title |
차트 제목 | title="월별 기온" |
labels |
축/범례 레이블 딕셔너리 | labels={"temp": "기온"} |
"생각보다 파라미터 몇 개로 다 되네."
민수가 코드를 보며 말했습니다. 지윤은 고개를 끄덕였습니다. 다음은 실제 매출 시계열 데이터를 다룰 차례였습니다.