Streamlit API
StreamlitRenderer
from pygwalker.api.streamlit import StreamlitRenderer
renderer = StreamlitRenderer(df, spec="./gw_config.json")
Parameters
Parameter | Type | Default | Description |
---|---|---|---|
dataset | Union[DataFrame, Connector] | - | El dataframe o conector a utilizar. |
gid | Union[int, str] | None | ID para el contenedor div de GraphicWalker, formateado como 'gwalker-{gid}'. Si gid es None, se generará automáticamente. |
field_specs | Optional[Dict[str, FieldSpec]] | None | Especificaciones de campos. Se inferirá automáticamente de dataset si no se especifica. |
theme_key | Literal['vega', 'g2'] | 'g2' | Tipo de tema para GraphicWalker. |
dark | Literal['media', 'light', 'dark'] | 'media' | Configuración del tema. 'Media' detectará automáticamente el tema del sistema operativo. |
spec | str | "" | Datos de configuración del gráfico. Puede ser un ID de configuración, JSON o URL de archivo remoto. |
spec_io_mode | Literal["r", "rw"] | "r" | Modo io de spec, por defecto es "r", "r" para leer, "rw" para leer y escribir. |
use_kernel_calc | bool | None | Si es Verdadero, utiliza el cálculo de núcleo para los datos, puede admitir un rendimiento alto en conjuntos de datos más grandes. Por defecto, es None, determina automáticamente si se debe usar el cálculo de núcleo. |
kanaries_api_key | str | "" | Clave de API de kanaries, por defecto es "". |
default_tab | Literal["data", "vis"] | "vis" | pestaña predeterminada a mostrar. Por defecto es "vis". |
**kwargs | Any | - | Argumentos de palabras clave adicionales. |
StreamlitRenderer.explorer
renderer.explorer()
Parameters
Parameter | Type | Default | Description |
---|---|---|---|
width | int | None | ancho de la interfaz de usuario, por defecto se adaptará al ancho de la página. |
height | int | 1000 | altura de la interfaz de usuario |
scrolling | bool | False | desplazamiento |
default_tab | Literal["data", "vis"] | "vis" | pestaña predeterminada a mostrar. Por defecto es "vis". |
StreamlitRenderer.chart
renderer.chart(0)
Parameters
Parameter | Type | Default | Description |
---|---|---|---|
index | int | None | índice de los gráficos |
width | int | None | ancho de la interfaz de usuario, por defecto se adaptará al ancho de la página. |
height | int | 1000 | altura de la interfaz de usuario |
scrolling | bool | False | desplazamiento |
StreamlitRenderer.viewer
renderer.viewer()
Parameters
Parameter | Type | Default | Description |
---|---|---|---|
width | int | None | ancho de la interfaz de usuario, por defecto se adaptará al ancho de la página. |
height | int | 1000 | altura de la interfaz de usuario |
scrolling | bool | False | desplazamiento |
Ejemplo de uso con use_kernel_calc habilitado (Recomendado)
Demo en línea: demo de 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)
Ejemplo de use_kernel_calc deshabilitado
import pygwalker as pyg
import pandas as pd
import streamlit.components.v1 as components
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")
# Import your data
df = pd.read_csv("/bike_sharing_dc.csv")
# Paste the copied Pygwalker chart code here
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":"c2Vhc29uXzM=","name":"season","semanticType":"nominal","analyticType":"dimension"},{"dragId":"gw_ZeVh","fid":"eWVhcl81","name":"year","semanticType":"nominal","analyticType":"dimension"},{"dragId":"gw_JqXv","fid":"aG9saWRheV82","name":"holiday","semanticType":"nominal","analyticType":"dimension"},{"dragId":"gw_OD2F","fid":"d29yayB5ZXMgb3Igbm90XzE0","name":"work yes or not","semanticType":"nominal","analyticType":"dimension"},{"dragId":"gw_KgQu","fid":"YW0gb3IgcG1fMTU=","name":"am or pm","semanticType":"nominal","analyticType":"dimension"},{"dragId":"gw_PqvI","fid":"RGF5IG9mIHRoZSB3ZWVrXzE2","name":"Day of the week","semanticType":"ordinal","analyticType":"dimension"}],"measures":[{"dragId":"gw_7JNg","fid":"aW5kZXhfMA==","name":"index","analyticType":"measure","semanticType":"quantitative","aggName":"sum"},{"dragId":"gw_IYM_","fid":"aG91cl80","name":"hour","analyticType":"measure","semanticType":"quantitative","aggName":"sum"},{"dragId":"gw_ofd8","fid":"dGVtcGVyYXR1cmVfNw==","name":"temperature","analyticType":"measure","semanticType":"quantitative","aggName":"sum"},{"dragId":"gw_sGlX","fid":"ZmVlbGluZ190ZW1wXzg=","name":"feeling_temp","analyticType":"measure","semanticType":"quantitative","aggName":"sum"},{"dragId":"gw_674M","fid":"aHVtaWRpdHlfOQ==","name":"humidity","analyticType":"measure","semanticType":"quantitative","aggName":"sum"},{"dragId":"gw_AxQD","fid":"d2luc3BlZWRfMTA=","name":"winspeed","analyticType":"measure","semanticType":"quantitative","aggName":"sum"},{"dragId":"gw_iy94","fid":"Y2FzdWFsXzEx","name":"casual","analyticType":"measure","semanticType":"quantitative","aggName":"sum"},{"dragId":"gw_9J2u","fid":"cmVnaXN0ZXJlZF8xMg==","name":"registered","analyticType":"measure","semanticType":"quantitative","aggName":"sum"},{"dragId":"gw_WzEF","fid":"Y291bnRfMTM=","name":"count","analyticType":"measure","semanticType":"quantitative","aggName":"sum"},{"dragId":"gw_count_fid","fid":"gw_count_fid","name":"Row count","analyticType":"measure","semanticType":"quantitative","aggName":"sum","computed":true,"expression":{"op":"one","params":[],"as":"gw_count_fid"}}],"rows":[{"dragId":"gw_gJqj","fid":"cmVnaXN0ZXJlZF8xMg==","name":"registered","analyticType":"measure","semanticType":"quantitative","aggName":"sum"}],"columns":[{"dragId":"gw_uZ9C","fid":"RGF5IG9mIHRoZSB3ZWVrXzE2","name":"Day of the week","semanticType":"ordinal","analyticType":"dimension"}],"color":[{"dragId":"gw_04s5","fid":"c2Vhc29uXzM=","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":{}}}]"""
# Generate the HTML using Pygwalker
pyg_html = pyg.to_html(df, spec=vis_spec)
# Embed the HTML into the Streamlit app
components.html(pyg_html, height=1000, scrolling=True)
Preguntas y respuestas relacionadas
¿Cómo construir una alternativa gratuita en línea a Tableau/PowerBI que pueda manejar una gran cantidad de datos?
Respuesta: Puedes utilizar pygwalker + streamlit + snowflake para construir una alternativa gratuita en línea a Tableau/PowerBI que pueda manejar una gran cantidad de datos.