API de PyGWalker para Streamlit
Usa StreamlitRenderer para incrustar PyGWalker en una app de Streamlit. Guarda el renderer en caché cuando el dataset y el estado de gráficos se reutilizan entre reruns.
import pandas as pd
import streamlit as st
from pygwalker.api.streamlit import StreamlitRenderer
st.set_page_config(page_title="PyGWalker", layout="wide")
@st.cache_resource
def get_renderer():
df = pd.read_csv("data.csv")
return StreamlitRenderer(
df,
spec_path="./gw_config.json",
spec_io_mode="rw",
computation="kernel",
)
renderer = get_renderer()
renderer.explorer()Constructor
StreamlitRenderer(
dataset,
gid=None,
*,
field_specs=None,
theme_key="g2",
appearance="media",
spec="",
spec_path=None,
spec_io_mode="r",
computation=None,
kernel_computation=None,
use_kernel_calc=None,
show_cloud_tool=None,
kanaries_api_key="",
default_tab="vis",
**kwargs,
)dataset puede ser un pandas DataFrame, polars DataFrame, pyarrow Table, Connector de base de datos o pygwalker.Walker reutilizable.
Opciones clave
| Opción | Predeterminado | Notas |
|---|---|---|
spec_path | None | Archivo local de estado de gráficos. Prefiere esta opción para archivos locales. |
spec_io_mode | "r" | Usa "rw" cuando la UI de Streamlit deba guardar ediciones de gráficos de vuelta en el archivo spec. |
computation | None | Usa "browser", "kernel" o "cloud" para forzar un modo. El comportamiento automático en Streamlit usa computación del lado del kernel de forma predeterminada. |
show_cloud_tool | None | Controla la visibilidad de la UI cloud cuando está disponible. |
default_tab | "vis" | Pestaña inicial del explorador. |
kernel_computation y use_kernel_calc son opciones heredadas de compatibilidad. Prefiere computation; los flags heredados están programados para eliminarse en PyGWalker 0.7.0.
Métodos principales
| Método | Uso |
|---|---|
renderer.explorer(key="explorer", default_tab="vis") | Explorador completo de arrastrar y soltar. |
renderer.viewer(key="viewer") | UI de solo visualización/renderizado con filtros. |
renderer.chart(index, key="chart", size=None, pre_filters=None) | Renderiza un gráfico guardado por índice basado en cero. |
renderer.table(key="table") | Renderiza la vista de tabla. |
renderer.set_global_pre_filters(pre_filters) | Aplica filtros entre gráficos salvo que una llamada a gráfico los sobrescriba. |
Renderiza un gráfico guardado
Después de guardar gráficos en spec_path, renderiza un gráfico por índice.
renderer.chart(0, size=(720, 420))Usa PreFilter para aplicar filtros a nivel de gráfico.
from pygwalker.api.streamlit import PreFilter
renderer.chart(
0,
pre_filters=[
PreFilter(field="category", op="one of", value=["A", "B"]),
PreFilter(field="revenue", op="range", value=[0, 100000]),
],
)PreFilter acepta:
PreFilter(
field: str,
op: "range" | "temporal range" | "one of",
value: list[int | float | str],
)Para op="temporal range", los valores pueden ser marcas de tiempo en milisegundos o cadenas de fecha parseables.
Reutiliza un Walker
Si el mismo dataset y las mismas opciones deben compartirse con otros adaptadores, construye primero un Walker.
import pygwalker as pyg
from pygwalker.api.streamlit import StreamlitRenderer
walker = pyg.Walker(
df,
spec_path="./gw_config.json",
spec_io_mode="rw",
computation="kernel",
)
renderer = StreamlitRenderer(walker)
renderer.explorer()Cuando pases un Walker, coloca las opciones de construcción en pyg.Walker(...). StreamlitRenderer(walker, spec_path="./other.json") se rechaza porque entraría en conflicto con el objeto existente.
get_streamlit_html
get_streamlit_html devuelve la cadena HTML usada por el componente de Streamlit.
from pygwalker.api.streamlit import get_streamlit_html
html = get_streamlit_html(
df,
spec_path="./gw_config.json",
spec_io_mode="rw",
mode="explore",
computation="kernel",
)Los modos compatibles son "explore", "filter_renderer" y "table".
Errores comunes
| Error | Solución |
|---|---|
Recrear StreamlitRenderer en cada rerun | Envuelve la construcción en @st.cache_resource. |
Usar spec="./gw_config.json" para archivos locales | Usa spec_path="./gw_config.json". |
Pasar opciones de construcción después de proporcionar un Walker | Mueve esas opciones a pyg.Walker(...). |
Empezar código nuevo con kernel_computation=True | Usa computation="kernel". |