import plotly.express as px
# Gapminder 데이터셋 로드
= px.data.gapminder()
df
# 기본적인 산점도 생성
= px.scatter(df[df['year'] == 2007],
fig ="gdpPercap",
x="lifeExp",
y="pop",
size="continent",
color="country",
hover_name=True,
log_x=60)
size_max
# 그래프 표시
fig.show()
Hover 기능 사용하기
Plotly는 대화형 데이터 시각화를 위해 강력한 기능들을 제공하는 라이브러리입니다. 그중에서도 hover
기능은 데이터 포인트에 마우스를 가져다 댔을 때 추가적인 정보를 제공할 수 있어 매우 유용합니다.
여기서는 Plotly의 hover
기능을 사용하여, 다른 데이터셋을 활용한 몇 가지 예시를 만들어보겠습니다. Gapminder
데이터셋을 사용하여 세계 각국의 경제 및 인구 통계 정보를 시각화하는 예시를 보여드리겠습니다.
1. Gapminder 데이터셋을 사용한 기본 Hover 기능 예시
먼저, Gapminder
데이터셋을 사용하여 기본적인 산점도를 생성하고, 기본 hover
기능을 확인해보겠습니다.
이 코드는 2007년 데이터를 사용하여, 각 나라의 1인당 GDP(gdpPercap
)와 기대 수명(lifeExp
)을 산점도로 표현합니다. 각 점의 크기는 인구(pop
)를 나타내며, 색상은 대륙(continent
)에 따라 다릅니다. 기본적으로 각 나라의 이름(country
)이 hover
시 나타납니다.
2. Hover 데이터 커스터마이징 예시
이번에는 hover_data
매개변수를 사용하여 추가 정보를 hover
시 나타내 보겠습니다. 예를 들어, 기대 수명(lifeExp
)과 인구(pop
) 정보도 함께 표시하도록 설정합니다.
# Hover 데이터 커스터마이징
= px.scatter(df[df['year'] == 2007],
fig ="gdpPercap",
x="lifeExp",
y="pop",
size="continent",
color="country",
hover_name=["pop", "lifeExp"],
hover_data=True,
log_x=60)
size_max
# 그래프 표시
fig.show()
이제 각 데이터 포인트에 마우스를 가져다 대면 해당 국가의 이름, 인구, 기대 수명 등의 정보가 함께 표시됩니다.
3. Hover 템플릿 커스터마이징 예시
hovertemplate
을 사용하여 더욱 구체적인 정보를 원하는 형식으로 커스터마이징할 수 있습니다.
# Hover 템플릿 커스터마이징
= px.scatter(df[df['year'] == 2007],
fig ="gdpPercap",
x="lifeExp",
y="pop",
size="continent",
color="country",
hover_name=True,
log_x=60)
size_max
# 템플릿 설정
=(
fig.update_traces(hovertemplate"<b>%{hovertext}</b><br><br>" +
"GDP per Capita: %{x:$,.0f}<br>" +
"Life Expectancy: %{y:.1f} years<br>" +
"Population: %{marker.size:,} people"
))
# 그래프 표시
fig.show()
이 코드는 hovertemplate
을 사용하여 hover
정보의 형식을 더욱 상세히 지정했습니다. 예를 들어, 1인당 GDP는 달러 형식으로, 기대 수명은 소수점 한 자리까지, 인구는 천 단위 구분 기호를 사용해 표시되도록 설정했습니다.
4. 막대 그래프에서 Hover 기능 활용하기
이번에는 막대 그래프에서 hover
기능을 활용해 보겠습니다. 이 예시에서는 각 대륙의 총 인구를 보여줍니다.
# 막대 그래프 생성
= df[df['year'] == 2007]
df_2007 = df_2007.groupby('continent').agg({'pop':'sum'})
df_grouped = df_grouped.reset_index()
df_grouped # df_grouped
= px.bar(df_grouped,
fig ="continent",
x="pop",
y="continent",
color="continent",
hover_name={"pop": ":,"}, # 인구를 천 단위 구분으로 표시
hover_data="2007년 대륙별 총 인구")
title
# 그래프 표시
fig.show()
이 그래프에서 각 대륙의 막대 위에 마우스를 올리면, 해당 대륙의 총 인구가 천 단위 구분 기호와 함께 표시됩니다.
5. 히트맵에서 Hover 기능 활용하기
마지막으로, 히트맵을 사용하여 다양한 값에 대해 hover
기능을 설정하는 방법을 살펴보겠습니다.
import plotly.graph_objects as go
# 예시 데이터
= [[1.1, 0.8, 0.7], [0.5, 0.6, 0.9], [0.9, 0.7, 0.6]]
z = ['Monday', 'Tuesday', 'Wednesday']
x = ['Morning', 'Afternoon', 'Evening']
y
# 히트맵 생성
= go.Figure(data=go.Heatmap(
fig =z,
z=x,
x=y,
y='Viridis'))
colorscale
# Hover 템플릿 커스터마이징
=(
fig.update_traces(hovertemplate"Day: %{x}<br>" +
"Time: %{y}<br>" +
"Value: %{z:.2f}"
))
# 그래프 표시
fig.show()
이 히트맵에서는 요일과 시간대에 따른 값을 표시합니다. hovertemplate
을 사용하여, 각 셀에 마우스를 올리면 요일, 시간대, 그리고 해당 값이 소수점 두 자리까지 표시됩니다.
결론
Plotly의 hover
기능은 다양한 그래프 유형에서 강력하게 활용될 수 있습니다. 데이터 포인트에 대한 추가 정보를 제공하고, 시각화를 보다 직관적으로 만들어줍니다.