Skip to content
PYGWALKER
API リファレンス
Streamlit

PyGWalker Streamlit API

PyGWalker を Streamlit アプリに埋め込むには StreamlitRenderer を使います。データセットとチャート状態を rerun 間で再利用する場合は renderer をキャッシュします。

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 には pandas DataFrame、polars DataFrame、pyarrow Table、データベース Connector、または再利用可能な pygwalker.Walker を渡せます。

主要オプション

オプションデフォルトメモ
spec_pathNoneローカルチャート状態ファイル。ローカルファイルにはこれを推奨します。
spec_io_mode"r"Streamlit UI がチャート編集を spec ファイルへ保存する必要がある場合は "rw" を使います。
computationNoneモードを強制するには "browser""kernel""cloud" を使います。Streamlit の自動挙動は kernel 側計算がデフォルトです。
show_cloud_toolNone利用可能な場合に cloud UI の表示を制御します。
default_tab"vis"explorer の初期タブです。

kernel_computationuse_kernel_calc はレガシー互換オプションです。computation を優先してください。レガシーフラグは PyGWalker 0.7.0 で削除予定です。

主なメソッド

メソッド用途
renderer.explorer(key="explorer", default_tab="vis")フルのドラッグアンドドロップ explorer。
renderer.viewer(key="viewer")表示専用 / filter-renderer UI。
renderer.chart(index, key="chart", size=None, pre_filters=None)保存済みチャートを 0 始まりの index でレンダリングします。
renderer.table(key="table")テーブルビューをレンダリングします。
renderer.set_global_pre_filters(pre_filters)chart 呼び出しで上書きされない限り、チャート全体にフィルターを適用します。

保存済みチャートをレンダリングする

チャートを spec_path に保存したあと、index で 1 つのチャートをレンダリングします。

renderer.chart(0, size=(720, 420))

チャートレベルのフィルターには PreFilter を使います。

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 は次を受け取ります。

PreFilter(
    field: str,
    op: "range" | "temporal range" | "one of",
    value: list[int | float | str],
)

op="temporal range" では、value にミリ秒タイムスタンプまたは parse 可能な日付文字列を指定できます。

Walker を再利用する

同じデータセットとオプションを他のアダプターと共有したい場合は、先に 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()

Walker を渡す場合、構築オプションは pyg.Walker(...) 側に置きます。StreamlitRenderer(walker, spec_path="./other.json") は既存オブジェクトと競合するため拒否されます。

get_streamlit_html

get_streamlit_html は Streamlit component が使う HTML 文字列を返します。

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",
)

対応モードは "explore""filter_renderer""table" です。

よくある落とし穴

落とし穴修正方法
rerun ごとに StreamlitRenderer を作り直す構築処理を @st.cache_resource で包みます。
ローカルファイルに spec="./gw_config.json" を使うspec_path="./gw_config.json" を使います。
Walker を渡したあとに構築オプションを渡すそれらのオプションを pyg.Walker(...) に移します。
新しいコードを kernel_computation=True で始めるcomputation="kernel" を使います。

関連ガイド