Skip to content

Streamlit과 Plotly: 쉬운 대화형 데이터 시각화

데이터 과학의 영역에서 시각화는 복잡한 데이터셋을 이해하고 유의미한 통찰력을 추출하기 위해 중요한 역할을 합니다. Streamlit과 Plotly는 이 분야를 혁신한 강력한 도구 두 가지입니다. 이 기사는 이 도구들을 함께 사용하여 대화형 시각화와 대시보드를 만드는 방법에 대한 포괄적인 가이드를 제공합니다. 초보자든 경험이 많은 개발자든, Streamlit과 Plotly를 시작하기 위해 필요한 모든 것을 찾을 수 있습니다.

Streamlit과 Plotly 소개

Streamlit은 개발자가 쉽게 대화형 웹 애플리케이션을 만들 수 있는 오픈소스 Python 프레임워크입니다. 데이터 과학자와 머신러닝 엔지니어들이 몇 줄의 코드로 데이터 스크립트를 공유 가능한 웹 앱으로 변환하는 데 도움을 줍니다. Streamlit의 간결함과 유연성은 데이터 전문가들 사이에서 인기가 있습니다.

Plotly는 다양한 차트 유형을 지원하는 다재다능한 라이브러리로, 아름답고 대화형 플롯을 만들 수 있습니다. 통계, 금융, 지리, 과학 및 3차원 사용 사례를 포괄하는 40가지 이상의 고유한 차트 유형을 지원합니다. Plotly의 상호 작용성을 통해 사용자는 확대, 이동, 호버링 및 시각화 내부로의 탐색 기능을 이용하여 직관적이고 정보성 있는 데이터 탐색을 할 수 있습니다.

Streamlit과 Plotly를 함께 사용하면 개발자는 상대적으로 쉽게 복잡한 시각화를 포함한 대화형 대시보드를 만들 수 있게 됩니다.

Plotly 대신 Streamlit에서 사용하는 대안: PyGWalker 사용하기:

Plotly는 강력한 도구이지만, 파이썬에서 데이터 시각화를 위한 유일한 옵션은 아닙니다. PyGWalker (opens in a new tab)는 Streamlit AgGrid의 대안으로 작동하는 놀라운 도구입니다.

PyGWalker + Streamlit 온라인 데모 (opens in a new tab)

PyGWalker (opens in a new tab)는 Tableau와 유사한 UI를 Streamlit 앱에 쉽게 포함할 수 있도록 도와주는 파이썬 라이브러리입니다.

강력한 데이터 시각화 파이썬 라이브러리로 Streamlit 앱을 개선하는 자세한 단계를 설명한 Sven from Coding is Fun (opens in a new tab)의 멋진 비디오도 확인해보세요!


PyGWalker 커뮤니티에 크게 도움이 된 Sven과 그의 훌륭한 기여 (opens in a new tab)에 특별히 감사드립니다!

추가로 다음 자료를 확인할 수도 있습니다:

PyGWalker를 사용하여 Streamlit에서 데이터 시각화 (opens in a new tab)

Streamlit과 Plotly를 사용하여 대화형 시각화 만들기

Streamlit과 Plotly를 사용하여 대화형 시각화를 만드는 것은 간단한 과정입니다. 첫 번째 단계는 필요한 라이브러리를 Python 스크립트에서 가져오는 것입니다. 다음은 예입니다:

import streamlit as st
import plotly.express as px

다음으로, Plotly 피규어를 생성하고 Streamlit 앱에서 표시할 수 있습니다. 예를 들어, Plotly를 사용하여 간단한 막대 차트를 만들고 Streamlit에서 표시해보겠습니다:

## 샘플 데이터프레임 생성
df = pd.DataFrame({
   'Fruit': ['사과', '오렌지', '바나나', '사과', '오렌지', '바나나'],
   '수량': [4, 1, 2, 2, 4, 5],
   '도시': ['SF', 'SF', 'SF', 'Montreal', 'Montreal', 'Montreal']
})
 
## Plotly를 사용하여 막대 차트 생성
fig = px.bar(df, x='Fruit', y='수량', color='도시', barmode='group')
 
## Streamlit에서 차트 표시
st.plotly_chart(fig)

이 예에서 px.bar는 막대 차트를 생성하기 위해 사용되고, st.plotly_chart는 Streamlit 앱에서 차트를 표시하기 위해 사용됩니다. 결과는 사용자가 데이터 값을 호버하여 확인하고, 확대/축소하며, 정적 이미지로 다운로드할 수 있는 대화형 막대 차트입니다.

Streamlit과 Plotly의 고급 기법

Streamlit과 Plotly를 사용하여 기본 대화형 시각화를 만드는 것은 간단하지만, 이 도구들은 더 복잡하고 사용자 정의 가능한 시각화를 위한 고급 기능도 제공합니다.

하나의 예는 Streamlit에서 Plotly 피규어를 업데이트하는 기능입니다. 이는 Plotly에서 update_layoutupdate_traces 메서드를 사용하여 수행할 수 있습니다. 예를 들어, 레이아웃을 업데이트하여 제목, 축 레이블 등을 변경할 수 있습니다:

fig.update_layout(
    title='새로운 제목',
    xaxis_title='새로운 X 축 제목',
    yaxis_title='새로운 Y 축 제목',
)

마찬가지로, 플롯된 데이터의 속성(예: 마커 색상)을 변경하기 위해 피규어의 추적을 업데이트할 수 있습니다:

fig.update_traces(marker_color='rgb(158,202,225)')

또 다른 고급 기능은 Streamlit에서 Plotly 차트의 크기 조정 문제를 해결하는 능력입니다. 때로는 Plotly 차트가 Streamlit 앱의 레이아웃에 잘 맞지 않아 잘릴 수 있거나 다른 요소와 겹칠 수 있습니다. 이는 st.plotly_chart 함수의 heightwidth 매개변수를 조정하여 해결할 수 있습니다:

```Python
st.plotly_chart(fig, use_container_width=True)

이 예제에서 use_container_width=True를 사용하면 차트가 Streamlit 앱의 주요 열 전체 너비를 차지하여 레이아웃 내에서 잘 맞게합니다.

Streamlit Plotly 대시보드 만들기

Streamlit과 Plotly를 사용하여 대시보드를 구축하기 위해서는 여러 상호작용 가능한 시각화 및 컨트롤을 단일 앱으로 결합해야합니다. 이러한 컨트롤은 슬라이더, 체크 박스 및 선택 상자와 같은 것으로 사용자가 시각화와 상호작용하고 실시간으로 업데이트 할 수 있도록 합니다.

다음은 간단한 Streamlit Plotly 대시보드의 예입니다:

import streamlit as st
import plotly.express as px
import pandas as pd
 
## 데이터 로드
df = pd.read_csv('data.csv')
 
## 차트 유형을 선택할 수 있는 선택 상자 추가
chart_type = st.selectbox('차트 유형 선택', ['막대', '선'])
 
## 차트 생성
if chart_type == '막대':
    fig = px.bar(df, x='과일', y='수량', color='도시', barmode='그룹')
elif chart_type == '선':
    fig = px.line(df, x='과일', y='수량', color='도시')
 
## 차트 표시
st.plotly_chart(fig, use_container_width=True)

이 예제에서는 st.selectbox를 사용하여 Streamlit 앱에 선택 상자를 추가했습니다. 선택한 값을 사용하여 생성할 Plotly 차트의 유형을 결정합니다. 그런 다음 st.plotly_chart를 사용하여 앱에서 차트를 표시합니다.

Streamlit Plotly 대시보드 구축은 데이터 시각화 프로젝트의 요구에 따라 필요한만큼 단순하거나 복잡 할 수 있습니다. Streamlit과 Plotly의 유연성과 강력함으로 인해 가능성은 무궁무진합니다.

결론: 데이터 시각화에 대한 Streamlit과 Plotly의 힘

Streamlit과 Plotly는 상호작용하는 데이터 시각화 및 대시보드를 만들기 위한 강력한 조합입니다. Streamlit의 간결성과 유연성은 웹 앱 구축에 우수한 도구이며, Plotly의 다양한 차트 유형과 상호작용 기능은 데이터 시각화에 유용한 도구입니다.

Streamlit과 Plotly의 통합은 데이터 과학자와 개발자에게 다양한 가능성을 엽니다. 간단한 막대 차트부터 여러 상호작용 가능한 시각화가 포함된 복잡한 대시보드를 구축하기까지, 이 도구들은 데이터를 인사이트로 변환하기 위해 필요한 기능을 제공합니다.

데이터가 우리 세상에서 점점 더 중요한 역할을 하면서, Streamlit과 Plotly와 같은 도구는 지속적으로 발전하고 향상될 것입니다. 이러한 도구들과 그들을 효과적으로 사용하는 방법을 학습하여 데이터 시각화 기술을 향상시키고, 더 강력하고 통찰력있는 시각화를 만들 수 있습니다.

Streamlit 앱을 Tableau로 변환해주는 멋진 데이터 분석 및 데이터 시각화 도구인 PyGWalker를 들어보셨나요?

PyGWalker (opens in a new tab)는 Streamlit 앱을 손쉽게 Tableau와 유사한 UI로 임베드 할 수 있는 파이썬 라이브러리입니다.

PyGWalker를 사용한 Streamlit의 데이터 시각화 (opens in a new tab)

자주 묻는 질문

1. Streamlit에서 Plotly 차트를 인터랙티브하게 표시하는 방법은 무엇인가요?

st.plotly_chart 함수를 사용하여 Streamlit에서 인터랙티브한 Plotly 차트를 표시할 수 있습니다. 먼저 Plotly figure를 만들고, 그것을 st.plotly_chart에 전달하여 Streamlit 앱에서 표시합니다. 결과는 사용자가 마우스를 올리고 확대/축소를 할 수 있으며, 정적 이미지로 다운로드할 수 있는 인터랙티브한 차트입니다.

2. Plotly의 figure를 Streamlit에서 업데이트하는 방법은 무엇인가요?

Plotly에서 update_layoutupdate_traces 메소드를 사용하여 Streamlit에서 Plotly figure를 업데이트할 수 있습니다. update_layout 메소드는 제목 및 축 레이블과 같은 figure의 레이아웃을 변경하는 데 사용됩니다. update_traces 메소드는 plot된 데이터의 속성, 예를 들어 마커 색상을 변경하는 데 사용됩니다.

3. Streamlit에서 Plotly 차트의 크기 조절 문제를 어떻게 해결할 수 있나요?

Streamlit에서 Plotly 차트의 크기 조절 문제를 해결하기 위해 st.plotly_chart 함수의 heightwidth 매개변수를 조정할 수 있습니다. 예를 들어, use_container_width=True로 설정하면 차트가 Streamlit 앱의 주요 열 전체 너비를 차지하여 레이아웃 내에서 잘 맞게 할 수 있습니다.