iBetter Books
수정

"기온 데이터로 먼저 연습해보자."

지윤이 민수에게 말했습니다. 실제 매출 데이터를 바로 쓰기 전에 구조를 익혀두는 게 좋다고 생각했습니다. 월별 기온 데이터는 누구나 직관적으로 이해할 수 있었습니다.

이 PART부터 차트 제목에 한글이 등장합니다. 한글이 깨져 보이면 PART 01 03장 "한글 폰트 설정"을 참고하세요.


px.line() 기본 사용법

px.line()은 데이터프레임을 받아 선 그래프를 만듭니다. 가장 기본적인 형태는 xy만 지정하는 것입니다.

# 파일: 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": "기온"}

"생각보다 파라미터 몇 개로 다 되네."

민수가 코드를 보며 말했습니다. 지윤은 고개를 끄덕였습니다. 다음은 실제 매출 시계열 데이터를 다룰 차례였습니다.