Plotly의 기능소개

Author

Gabriel Yang

Plotly를 이용해서 간단한 그래프를 그리고 그래프를 커스터마이징하는 과정을 진행했습니다. 이 장에서는 Plotly에서 지원하는 더룬 주요 기능에 대해서 설명합니다.

다양한 그래프 유형

Plotly는 다양한 그래프 유형을 지원하여 사용자가 다양한 형태의 데이터를 시각화할 수 있도록 합니다. 주요 그래프 유형으로는 선형 차트, 막대 차트, 원형 차트, 히스토그램, 산점도, 박스 플롯, 히트맵, 버블 차트, 트리맵, 지오스캐터 차트, 영역 차트, 극좌표 차트 등이 있습니다.

차트종류 목적
선형 차트 (Line Chart) 선형 차트는 시간의 경과에 따른 데이터 변화를 시각화하는 데 유용합니다.
막대 차트 (Bar Chart) 막대 차트는 범주형 데이터를 비교하는 데 유용합니다.
원형 차트 (Pie Chart) 원형 차트는 전체에 대한 각 부분의 비율을 시각화하는 데 유용합니다.
히스토그램 (Histogram) 히스토그램은 데이터의 분포를 시각화하는 데 유용합니다.
산점도 (Scatter Plot) 산점도는 두 변수 간의 관계를 시각화하는 데 유용합니다.
박스 플롯 (Box Plot) 박스 플롯은 데이터의 분포와 이상치를 시각화하는 데 유용합니다.
히트맵 (Heatmap) 히트맵은 두 변수의 값을 색상으로 시각화하는 데 유용합니다.
버블 차트 (Bubble Chart) 버블 차트는 산점도의 확장으로, 세 번째 변수를 점의 크기로 시각화합니다.
트리맵 (Treemap) 트리맵은 계층 구조를 색상과 면적으로 시각화하는 데 유용합니다.
지오스캐터 차트 (Geoscatter Plot) 지오스캐터 차트는 지도 위에 데이터 포인트를 시각화하는 데 유용합니다.
영역 차트 (Area Chart) 영역 차트는 선형 차트와 비슷하지만, 아래 영역을 색칠하여 데이터의 누적치를 강조합니다.
극좌표 차트 (Polar Chart) 극좌표 차트는 원형 축을 사용하여 데이터를 시각화합니다.

Plotly는 이 외에도 다양한 특수 목적의 그래프를 지원합니다. 각 그래프 유형은 다양한 시각화 요구를 충족시키기 위해 커스터마이징이 가능합니다.

대화형 그래프

Plotly의 가장 큰 장점 중 하나는 대화형 그래프를 쉽게 생성할 수 있다는 점입니다. 마우스 오버, 클릭, 확대/축소 등의 기능을 통해 사용자와 상호작용할 수 있는 그래프를 만들 수 있습니다. 이러한 대화형 기능은 데이터 분석을 더욱 직관적이고 이해하기 쉽게 만듭니다.

대시보드와 통합

Plotly는 Dash와 함께 사용하여 대시보드를 쉽게 생성할 수 있습니다. Dash는 Plotly를 기반으로 한 대시보드 프레임워크로, 웹 애플리케이션을 만들기 위한 다양한 도구와 기능을 제공합니다.

출력 형식

Plotly는 그래프를 다양한 형식으로 저장할 수 있습니다. HTML, PNG, JPEG, SVG 등 여러 형식으로 저장할 수 있어 웹에 쉽게 삽입하거나 문서에 포함시킬 수 있습니다.

Plotly 그래프를 이미지 파일로 저장하려면 추가적으로 Kaleido 라이브러리를 설치해야 합니다. Kaleido는 Plotly 그래프를 PNG, JPEG, SVG와 같은 형식으로 저장하는 데 사용되는 도구입니다. 아래의 명령어를 샐행하여 Kaleido를 설치합니다.

pip install -U kaleido
Requirement already up-to-date: kaleido in /usr/lib/python3.8/site-packages (0.2.1)
Note: you may need to restart the kernel to use updated packages.

데이터를 로드하고 그래프를 생성한 후 이미지로 저장하기 위해 아래 코드를 실행합니다.

import pandas as pd
import plotly.express as px

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["날짜"])

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

위의 코드를 실행하면 위와 같이 그래프가 fig1.png 파일로 저장됩니다.