Skip to content

Plotly 히트맵 - 팁, 트릭, 및 예제

히트맵은 데이터 시각화 분야에서 강력한 도구입니다. 복잡한 데이터를 직관적인 방식으로 시각화하는 데 사용되며, 데이터 과학자 및 분석가에게 필수적인 도구입니다. 히트맵을 생성하는 가장 인기있는 라이브러리 중 하나는 Plotly로, 이는 Python 라이브러리로서 고도의 사용자 정의와 상호 작용성을 제공합니다. 이 안내서에서는 Plotly 히트맵의 세계에 집중하여 기능을 탐색하고 실용적인 예제를 제공하여 멋진 시각화를 만드는 데 도움을 드릴 것입니다.

Plotly는 히트맵을 포함한 다양한 시각화를 쉽게 생성할 수 있는 다목적 라이브러리입니다. Plotly의 히트맵은 시각적으로 매력적이면서, 줌, 팬, 호버 등 상호 작용이 가능하여 데이터에 대한 깊은 이해를 얻을 수 있습니다. 이 안내서에서는 데이터 시각화 요구에 맞게 Plotly 히트맵을 만들고 사용자 정의 및 최적화하는 방법에 대한 포괄적인 이해를 제공할 것입니다.

히트맵이란?

히트맵은 개별 값들을 색상으로 나타내는 데이터의 그래픽적 표현입니다. 많은 데이터 포인트가 있는 경우 패턴이나 상관 관계에 관심이 있을 때 특히 유용한 데이터 플로팅 방식입니다. 히트맵의 색상 변화는 패턴을 쉽게 강조하고 정보의 빠른 시각적 요약을 제공할 수 있습니다.

Plotly 히트맵이란?

Plotly 히트맵은 Python의 Plotly 라이브러리를 사용하여 생성할 수 있는 히트맵의 한 유형입니다. 복잡한 히트맵 시각화를 만들기 위한 다양한 기능을 제공하는 강력한 도구입니다. Plotly를 사용하면 상호 작용이 가능하며 사용자 정의가 가능하며, 웹 사이트나 앱에 쉽게 공유하거나 포함시킬 수 있는 히트맵을 생성할 수 있습니다.

Plotly 히트맵 생성하기

Plotly 히트맵을 생성하는 것은 몇 가지 주요 단계를 수행해야 합니다. 먼저 필요한 라이브러리를 가져와 데이터를 로드해야 합니다. Plotly의 고수준 인터페이스 중 하나인 Plotly Express를 사용하면 몇 줄의 코드로 히트맵을 생성할 수 있습니다. 다음은 기본 예제입니다:

import plotly.express as px
 
# 가정: df는 pandas DataFrame입니다
fig = px.imshow(df)
fig.show()

이 예제에서 px.imshow() 함수를 사용하여 DataFrame df에서 히트맵을 생성합니다. 생성된 히트맵은 fig.show()를 사용하여 표시됩니다.

Plotly 히트맵에 주석 추가하기

Plotly 히트맵에는 데이터 포인트에 대한 추가 정보를 제공하기 위해 주석을 추가할 수 있습니다. 이를 위해 Plotly의 add_annotation() 함수를 사용할 수 있습니다. 다음은 예제입니다:

import plotly.graph_objects as go
 
fig = go.Figure(data=go.Heatmap(
                   z=[[1, 20, 30],
                      [20, 1, 60],
                      [30, 60, 1]]))
fig.add_annotation(text="주석이 달린 히트맵",
                  xref="paper", yref="paper",
                  x=0.5, y=-0.15, showarrow=False)
 
fig.show()

이 예제에서는 히트맵 아래에 주석을 추가합니다. xrefyref 매개변수는 "paper"로 설정되어 있으며, 이는 좌표가 도형의 크기에 상대적임을 의미합니다. (0, 0)은 좌하단이고 (1, 1)은 우상단입니다.

Python에서 상관 히트맵 만들기

상관 히트맵은 데이터 세트의 상관 행렬을 시각화하는 데 자주 사용되는 히트맵 유형입니다. 상관 행렬은 많은 변수 간의 상관 계수를 보여주는 표입니다. 표의 각 셀에는 두 변수 사이의 상관 관계가 표시됩니다. 상관 행렬은 데이터를 요약하는 데 사용되며, 고급 분석의 입력물로서, 고급 분석의 진단 도구로 사용됩니다.

Python에서는 Plotly 라이브러리를 사용하여 상관 히트맵을 생성할 수 있습니다. 다음은 예제입니다:

import plotly.figure_factory as ff
import numpy as np
import pandas as pd
 
# 가정: df는 pandas DataFrame입니다
corr_matrix = df.corr()
heatmap = ff.create_annotated_heatmap(z=corr_matrix.values, 
                                      x=list(corr_matrix.columns), 
                                      y=list(corr_matrix.index), 
                                      annotation_text=corr_matrix.round(2).values, 
                                      showscale=True)
 
heatmap.show()

이 예제에서는 먼저 corr() 함수를 사용하여 DataFrame df의 상관 행렬을 계산합니다. 그런 다음 plotly.figure_factorycreate_annotated_heatmap() 함수를 사용하여 주석이 달린 히트맵을 생성합니다. 주석 텍스트에 대해 상관 값을 소수 둘째 자리로 반올림합니다.

Plotly 히트맵의 컬러스케일 변경하기

히트맵의 컬러스케일을 데이터나 사용자의 미적 취향에 맞게 변경할 수 있습니다. Plotly는 Cividis, Electric, Viridis 등 다양한 컬러스케일을 제공합니다. 컬러스케일을 변경하는 방법은 다음과 같습니다:

import plotly.express as px
 
# 가정: df는 pandas DataFrame입니다
fig = px.imshow(df, colorscale='Viridis')
fig.show()

이 예제에서 imshow() 함수의 colorscale 매개변수를 사용하여 컬러스케일을 'Viridis'로 설정합니다. 생성된 히트맵은 어두운 보라색에서 노란색까지 범위를 가진 Viridis 컬러스케일을 사용합니다.

Plotly Express를 사용한 히트맵

Plotly Express는 적은 양의 코드로 복잡한 시각화를 만드는 데 유용한 Plotly의 고수준 인터페이스입니다. 히트맵을 만드는 데 특히 유용합니다. 다음은 Plotly Express를 사용하여 히트맵을 만드는 예제입니다:

import plotly.express as px
 
# 가정: df는 pandas DataFrame입니다
fig = px.imshow(df)
fig.show()

이 예제에서는 imshow() 함수를 사용하여 Plotly Express에서 히트맵을 만듭니다. 이 함수는 DataFrame에서 x 및 y 레이블을 자동으로 추론하기 때문에 히트맵을 쉽게 생성할 수 있습니다.

Plotly 히트맵을 사용한 대화형 대시보드

Plotly의 가장 강력한 기능 중 하나는 대화형 대시보드를 만들 수 있는 능력입니다. 이러한 대시보드에는 히트맵을 포함하여 여러 시각화를 포함할 수 있으며 사용자가 실시간으로 데이터와 상호 작용할 수 있습니다. 다음은 Plotly 히트맵을 사용하여 대화형 대시보드를 만드는 예입니다.

import plotly.graph_objs as go
from plotly.subplots import make_subplots
 
# df1과 df2가 pandas DataFrame임을 가정합니다.
fig = make_subplots(rows=1, cols=2)
 
heatmap1 = go.Heatmap(z=df1.values, colorscale='Viridis')
heatmap2 = go.Heatmap(z=df2.values, colorscale='Cividis')
 
fig.add_trace(heatmap1, row=1, col=1)
fig.add_trace(heatmap2, row=1, col=2)
 
fig.show()

이 예제에서는 두 개의 열을 가진 subplot을 만듭니다. 그런 다음 서로 다른 DataFrame을 사용하여 두 개의 히트맵을 만들고 subplot에 추가합니다. 결과적으로 생성된 대시보드에서는 두 개의 히트맵이 나란히 표시되어 사용자가 상호적으로 비교할 수 있습니다.

PyGWalker를 사용하여 쉽게 히트맵 생성하기

플로티를 사용하지 않고 pandas 데이터프레임에서 히트맵을 생성하는 또 다른 옵션은 PyGWalker를 사용하는 것입니다. PyGWalker는 드래그 앤 드롭 변수로 데이터 시각화를 생성할 수 있는 오픈 소스 Python 라이브러리입니다.

다음은 빠르게 시작할 수 있는 방법입니다:

pygwalker 설정

시작하기 전에 pip 또는 conda를 사용하여 명령 줄에서 필요한 패키지를 설치해야 합니다. Pip 사용: PygWalker를 설치하려면 다음과 같이 실행하면 됩니다.

pip install pygwalker

최신 릴리스로 버전을 최신 상태로 유지하려면 다음과 같이 시도할 수 있습니다.

pip install pygwalker --upgrade

또는 다음 명령을 사용하여 최신 기능과 버그 수정을 얻을 수 있습니다.

pip install pygwalker --upgrade --pre

Conda-forge 사용:

conda-forge를 통해 PygWalker를 설치하려면 다음 중 하나를 실행합니다.

conda install -c conda-forge pygwalker

또는

mamba install -c conda-forge pygwalker

더 도움이 필요한 경우 conda-forge feedstock을 확인하십시오.

PyGWalker 실행

PygWalker를 설치한 후에는 pandas와 PygWalker를 가져와서 Jupyter Notebook에서 사용할 수 있습니다.

import pandas as pd
import pygwalker as pyg

PygWalker는 기존의 워크플로우에 매끄럽게 통합됩니다. 예를 들어 데이터프레임을 사용하여 그래픽 워커를 호출하려면 pandas를 사용하여 데이터를 로드한 다음 다음과 같이 실행할 수 있습니다.

df = pd.read_csv('./bike_sharing_dc.csv', parse_dates=['date'])
gwalker = pyg.walk(df)

polars를 사용하는 경우 (버전 pygwalker>=0.1.4.7a0), 다음과 같이 PygWalker를 사용할 수도 있습니다.

import polars as pl
df = pl.read_csv('./bike_sharing_dc.csv',try_parse_dates = True)
gwalker = pyg.walk(df)

더 유연성을 더하려면 Binder (opens in a new tab), Google Colab (opens in a new tab), 또는 Kaggle Code (opens in a new tab)를 통해 온라인에서 PygWalker를 시도해 볼 수도 있습니다.

이제 드래그 앤 드롭 변수를 사용하여 데이터를 분석하고 시각화할 수 있는 Tableau와 유사한 사용자 인터페이스가 있습니다. Tableau와 유사한 인터페이스를 갖춘 PyGWalker

히트맵 생성

Pandas 또는 Polars 데이터프레임을 가져온 후에는 아래와 같이 쉽게 히트맵을 만들 수 있습니다:

  1. 도구 모음에서 Mark Type 버튼을 선택하고 'Rectangle'을 선택합니다.
  2. 변수를 좌클릭하면 메뉴가 표시됩니다. 'BIN' 옵션을 선택합니다.

PyGWalker는 열렬한 데이터 과학자 및 개발자 커뮤니티의 지원을 받아 개발되었습니다. PyGWalker GitHub 페이지 (opens in a new tab)에서 GitHub 프로젝트에 스타를 부탁드립니다!

자주 묻는 질문

  1. Plotly 히트맵이란 무엇인가요? Plotly 히트맵은 Python의 Plotly 라이브러리를 사용하여 생성할 수 있는 히트맵의 종류입니다. 복잡한 히트맵 시각화를 만들 수 있는 다양한 기능을 제공합니다.

  2. Plotly 히트맵을 어떻게 만들 수 있나요? Plotly Express의 imshow() 함수나 plotly.graph_objectsHeatmap() 함수를 사용하여 Plotly 히트맵을 만들 수 있습니다. 이러한 함수에 데이터를 전달하고, fig.show()를 사용하여 표시할 수 있는 그림을 반환받아야 합니다.

  3. Plotly 히트맵에 주석을 추가할 수 있나요? 네, add_annotation() 함수를 사용하여 Plotly 히트맵에 주석을 추가할 수 있습니다. 이를 통해 히트맵에 추가적인 텍스트나 정보를 추가할 수 있습니다.