첫 번째 Plotly 그래프 그리기

Author

Gabriel Yang

Plotly를 위한 개발환경이 준비되었으니 간단한 Plotly 그래프를 만들어 보겠습니다. Plotly를 이용해서 그래프를 그리는 전체 과정을 알아보며 큰 그림을 그릴 수 있도록 진행하겠습니다.

과정 중 이해가 되지 않는 부분이 있더라도 책에서 차근차근 소개할 예정이니 전체 흐름을 이해한다는 느낌으로 읽으면 좋겠습니다.

데이터 준비하기

Plotly로 그래프를 만들기 위해서는 시각화할 데이터를 준비해야 합니다. 이번 예제에서는 간단한 선 그래프를 만들기 위해 아래와 같은 데이터를 사용할 것입니다:

import pandas as pd

data = {
    "날짜": ["2024-01-01", "2024-01-02", "2024-01-03", "2024-01-04", "2024-01-05"],
    "판매량": [150, 200, 170, 220, 180],
    "판매왕": ["John", "Peter", "Peter", "Tony", "Bob"]
}

df = pd.DataFrame(data)
df["날짜"] = pd.to_datetime(df["날짜"])
df.head()
날짜 판매량 판매왕
0 2024-01-01 150 John
1 2024-01-02 200 Peter
2 2024-01-03 170 Peter
3 2024-01-04 220 Tony
4 2024-01-05 180 Bob

위의 코드는 Pandas 데이터프레임을 생성합니다. 컬럼은 날짜판매량은 각각 날짜 데이터와 판매량을 표현하는 숫자를 갖습니다.

좋은 시각화는 적절한 그래프 선택으로 시작합니다. 어떤 그래프가 이 데이터를 잘 시각화 할 수 있을까요? 시간의 흐름에 따른 값의 변화를 표현해야 하기 때문에 이 데이터를 잘 표현할 수 있는 그래프는 line 차트 또는 bar 차트가 될 것 같습니다.

Plotly 그래프 생성하기

Plotly를 사용하여 그래프를 생성하는 것은 매우 간단합니다. Plotly의 express 모듈을 사용하면 몇 줄의 코드로 아름다운 그래프를 만들 수 있습니다. 이번 예제에서는 px.line을 사용하여 선 그래프를 그리겠습니다.

import plotly.express as px

fig = px.line(df, x="날짜", y="판매량", title="일별 판매량")
fig.show()

x축에는 날짜, y축에는 해당 날짜의 판매량이 표시됩니다. 시간에 흐름에 따른 판매량의 변화를 이해할 수 있습니다. 차트의 제목을 일별 판매량으로 표시되는군요.

막대 그래프로 표현하는 경우는 어떨까요?

import plotly.express as px

fig = px.bar(df, x="날짜", y="판매량", title="일별 판매량")
fig.show()

위의 코드는 동일한 데이터를 막대그래프로 표현하는 코드입니다. 사용하는 함수가 px.line()에서 px.bar()로 변경되었고 전달하는 데이터는 동일합니다.

그래프 커스터마이징

그래프는 데이터를 잘 표현하고 있지만 살짝 아시운 부분이 있습니다. 그래프로 표현하는 X축과 Y축의 값이 작고 보고서의 폰트와 달라 아쉽습니다.

다행히 Plotly는 기본 그래프 생성 외에도 다양한 커스터마이징 옵션을 제공합니다. 이 기능을 이용하면 제목, 축 레이블, 레이아웃 등을 쉽게 변경할 수 있습니다. 몇 가지 예를 들어보겠습니다.

fig.update_layout(
    title="2024년 일별 판매량",
    xaxis_title="날짜",
    yaxis_title="판매량",
    font=dict(
        family="Courier New",
        size=25,
        color="darkgreen"
    )
)

fig.show()

새로운 그래프는 X축, Y축의 글자 크기도 커지고 원하는 폰트로 변경되었습니다. 보고서에 사용하기 적합하게 그래프를 커스터마이징했습니다.

대화형 기능 추가하기

Plotly의 강력한 기능 중 하나는 대화형 기능입니다. 사용자가 그래프의 특정 부분을 클릭하거나 마우스를 올렸을 때 추가 정보를 표시할 수 있습니다. 이를 위해 hover_data 옵션을 사용할 수 있습니다.

fig = px.bar(df, x="날짜", y="판매량", title="일별 판매량", hover_data={"판매왕": True})
fig.show()

해당 날짜의 판매왕이 누구인지를 그래프 대화박스에 표시할 수 있다면 좋겠습니다. 위의 코드로 대화박스에 표현될 데이터인 판매왕 표시할 수 있습니다. 이제 그래프 대화박스에 판매왕정보가 추가되었습니다.

다양한 그래프 유형

Plotly는 선 그래프 외에도 막대 그래프, 원형 차트, 산점도 등 다양한 그래프 유형을 지원합니다. 데이터에 맞는 그래프를 선택해서 데이터를 시각화할 수 있습니다.