Streamlit API
StreamlitRenderer
from pygwalker.api.streamlit import StreamlitRenderer
renderer = StreamlitRenderer(df, spec="./gw_config.json")
매개변수
Parameter | Type | Default | Description |
---|---|---|---|
dataset | Union[DataFrame, Connector] | - | 사용할 데이터프레임 또는 커넥터입니다. Walker의 Dataset을 참조하십시오. |
gid | Union[int, str] | None | 그래픽 워커 컨테이너 div의 ID로, 'gwalker-{gid}'와 같은 형식으로 구성됩니다. gid가 None이면 자동으로 생성됩니다. |
field_specs | Optional[Dict[str, FieldSpec]] | None | 필드 사양입니다. 지정되지 않으면 dataset 에서 자동으로 유추됩니다. |
theme_key | Literal['vega', 'g2'] | 'g2' | 그래픽 워커의 테마 유형입니다. |
dark | Literal['media', 'light', 'dark'] | 'media' | 테마 설정입니다. 'media'는 OS 테마를 자동으로 감지합니다. |
spec | str | "" | 차트 구성 데이터입니다. 구성 ID, JSON 또는 원격 파일 URL이 될 수 있습니다. |
spec_io_mode | Literal["r", "rw"] | "r" | spec io 모드로, "r"은 읽기, "rw"은 읽기 및 쓰기를 나타냅니다. |
use_kernel_calc | bool | None | True인 경우 데이터에 대한 커널 계산을 사용하며, 큰 데이터셋에서 고성능을 지원할 수 있습니다. 자동으로 커널 계산을 사용할지 여부를 결정합니다. |
kanaries_api_key | str | "" | kanaries API 키입니다. 기본값은 "". |
default_tab | Literal["data", "vis"] | "vis" | 표시할 기본 탭입니다. 기본값은 "vis"입니다. |
**kwargs | Any | - | 추가 키워드 인수입니다. |
StreamlitRenderer.explorer
renderer.explorer()
매개변수
Parameter | Type | Default | Description |
---|---|---|---|
width | int | None | UI 너비로 기본적으로 페이지의 너비에 맞게 적응합니다. |
height | int | 1000 | UI 높이 |
scrolling | bool | False | 스크롤 여부 |
default_tab | Literal["data", "vis"] | "vis" | 표시할 기본 탭입니다. 기본값은 "vis"입니다. |
StreamlitRenderer.chart
renderer.chart(0)
매개변수
Parameter | Type | Default | Description |
---|---|---|---|
index | int | None | 차트의 인덱스 |
width | int | None | UI 너비로 기본적으로 페이지의 너비에 맞게 적응합니다. |
height | int | 1000 | UI 높이 |
scrolling | bool | False | 스크롤 여부 |
StreamlitRenderer.viewer
renderer.viewer()
매개변수
Parameter | Type | Default | Description |
---|---|---|---|
width | int | None | UI 너비로 기본적으로 페이지의 너비에 맞게 적응합니다. |
height | int | 1000 | UI 높이 |
scrolling | bool | False | 스크롤 여부 |
use_kernel_calc가 활성화된 경우의 예(권장)
온라인 데모: pygwalker 데모 (opens in a new tab)
from pygwalker.api.streamlit import StreamlitRenderer
import pandas as pd
import streamlit as st
# Adjust the width of the Streamlit page
st.set_page_config(
page_title="Use Pygwalker In Streamlit",
layout="wide"
)
# Add Title
st.title("Use Pygwalker In Streamlit")
# You should cache your pygwalker renderer, if you don't want your memory to explode
@st.cache_resource
def get_pyg_renderer() -> "StreamlitRenderer":
df = pd.read_csv("data.csv")
# If you want to use feature of saving chart config, set `spec_io_mode="rw"`
return StreamlitRenderer(df, spec="./gw_config.json")
renderer = get_pyg_renderer()
st.subheader("Display Explore UI")
tab1, tab2, tab3, tab4 = st.tabs(
["graphic walker", "data profiling", "graphic renderer", "pure chart"]
)
with tab1:
renderer.explorer()
with tab2:
renderer.explorer(default_tab="data")
with tab3:
renderer.viewer()
with tab4:
st.markdown("### registered per weekday")
renderer.chart(0)
st.markdown("### registered per day")
renderer.chart(1)
use_kernel_calc가 비활성화된 경우의 예
import pygwalker as pyg
import pandas as pd
import streamlit.components.v1 as components
import streamlit as st
# Streamlit 페이지의 너비 조정
st.set_page_config(
page_title="Streamlit에서 Pygwalker 사용",
layout="wide"
)
# 타이틀 추가
st.title("Streamlit에서 Pygwalker 사용")
# 데이터 가져오기
df = pd.read_csv("/bike_sharing_dc.csv")
# 복사한 Pygwalker 차트 코드를 여기에 붙여넣기
vis_spec = """[{"visId":"gw_rZy5","name":"Chart 1","encodings":{"dimensions":[{"dragId":"gw_BUE2","fid":"ZGF0ZV8x","name":"date","semanticType":"nominal","analyticType":"dimension"},{"dragId":"gw_x1ug","fid":"bW9udGhfMg==","name":"month","semanticType":"ordinal","analyticType":"dimension"},{"dragId":"gw_zRAa","fid":"c2Vhc29uZXM=","name":"season","semanticType":"nominal","analyticType":"dimension"},{"dragId":"gw_ZeVh","fid":"eWVhcl_R5","name":"year","semanticType":"nominal","analyticType":"dimension"},{"dragId":"gw_JqXv","fid":"aG9saWRheV2_N","name":"holiday","semanticType":"nominal","analyticType":"dimension"},{"dragId":"gw_OD2F","fid":"d29yksylcwl","name":"work yes or not","semanticType":"nominal","analyticType":"dimension"},{"dragId":"gw_KgQu","fid":"YW0gb3IgcG1fMTU0","name":"am or pm","semanticType":"nominal","analyticType":"dimension"},{"dragId":"gw_PqvI","fid":"RGF5kg0gIHRoZSB3ZWVgsot","name":"Day of the week","semanticType":"ordinal","analyticType":"dimension"}],"measures":[{"dragId":"gw__gJg","fid":"aW5kazhfMA==","name":"index","analyticType":"measure","semanticType":"quantitative","aggName":"sum"},{"dragId":"gw_qYM_","fid":"aG91ksl80","name":"hour","analyticType":"measure","semanticType":"quantitative","aggName":"sum"},{"dragId":"gw_ofd8","fid":"dGVtsaZV72YXR1cmVfNw==","name":"temperature","analyticType":"measure","semanticType":"quantitative","aggName":"sum"},{"dragId":"gw_sGl4","fid":"ZmVlnokXWluZ190ZW1wXzg8","name":"feeling_temp","analyticType":"measure","semanticType":"quantitative","aggName":"sum"},{"dragId":"gw_674M","fid":"aHVtafWjwZz","name":"humidity","analyticType":"measure","semanticType":"quantitative","aggName":"sum"},{"dragId":"gw_AxQA","fid":"d2luas2RwZWRg_xMI=","name":"winspeed","analyticType":"measure","semanticType":"quantitative","aggName":"sum"},{"dragId":"gw_iy94","fid":"Y2Fz2DWFszt11bE_x","name":"casual","analyticType":"measure","semanticType":"quantitative","aggName":"sum"},{"dragId":"gw_9J2q","fid":"cmVn9ndZmN0ZXJlZD","name":"registered","analyticType":"measure","semanticType":"quantitative","aggName":"sum"},{"dragId":"gw_WzEQ","fid":"Y291bnZ0XzFQ==","name":"count","analyticType":"measure","semanticType":"quantitative","aggName":"sum"},{"dragId":"gw_count_fid","fid":"gw_count_fid","name":"Row count","analyticType":"measure","seudo,":{
"op":"one",
"params":[],
"as":"gw_count_fid"
}}],"rows":[{"dragId":"gw_gJqj","fidsgsd":"cmVnaStXN0ZXJlZF8xMgxD","name":"registered","analyticType":"measure","semxdanticType":"quantitative","aggName":"sum"}],"columns":[{"drgswagId":"gw_uZ9C","fdrfdfid":"RGF5gDkZ99mIHRoZSB3ZWVrXzE2","name":"Day of the week","semanticType":"ordinal","analyticType":"dimension"}],"color":[{"dragId":"gw_04s5","fid":"c2VankHBzxG9u9cmudlXzM=","name":"season","semanticType":"nominal","analyticType":"dimension"}],"opacity":[],"size":[],"shape":[],"radius":[],"theta":[],"details":[],"filters":[],"text":[]},"config":{"defaultAggregated":true,"geoms":["auto"],"stack":"stack","showActions":false,"interactiveScale":false,"sorted":"none","zeroScale":true,"size":{"mode":"auto","width":320,"height":200},"format":{}}}]"""
# Pygwalker를 사용하여 HTML 생성
pyg_html = pyg.to_html(df, spec=vis_spec)
# HTML을 Streamlit 앱에 삽입
components.html(pyg_html, height=1000, scrolling=True)
관련 Q&A
Tableau/PowerBI의 대안인 대량 데이터 처리가 가능한 온라인 오픈 소스를 구축하는 방법은 무엇인가요?
답변: 큰 데이터 양을 처리할 수 있는 Tableau/PowerBI의 대안인 온라인 오픈 소스를 구축하려면 pygwalker + streamlit + snowflake를 사용할 수 있습니다.