Skip to content
GRAPHIC WALKER
APIリファレンス
GraphicWalker

GraphicWalker

GraphicWalkerは、ドラッグ&ドロップによるチャート作成、フィールド管理、複数チャートタブを備えた、完全なインタラクティブデータ探索インターフェースを提供するプライマリコンポーネントです。

import { GraphicWalker } from '@kanaries/graphic-walker';

プロパティ

データプロパティ

プロパティ必須説明
dataRecord<string, any>[]はい*データレコードの配列。クライアント側計算に使用。
fieldsIMutField[]はいデータの各列を記述するフィールド定義。
computationIComputationFunctionはい*サーバー側計算関数。dataの代替。
computationTimeoutnumberいいえ計算リクエストのタイムアウト(ミリ秒)。

*data(クライアント側)またはcomputation(サーバー側)のいずれかを指定してください。両方は指定しないでください。

チャート設定プロパティ

プロパティデフォルト説明
chartIChart[]undefined読み込む事前設定されたチャート仕様。
defaultConfig{ config?: Partial<IVisualConfigNew>; layout?: Partial<IVisualLayout> }undefined新しいチャートに適用されるデフォルト設定。
defaultRenderer'vega-lite' | 'observable-plot''vega-lite'新しいチャートのデフォルトレンダリングエンジン。

外観プロパティ

プロパティデフォルト説明
appearance'media' | 'light' | 'dark''media'ダークモード設定。'media'はシステム設定に従います。
vizThemeConfigIThemeKey | GWGlobalConfigundefinedチャートレンダリングテーマ。組み込みオプション: 'vega''g2''streamlit'
uiThemeIUIThemeConfigundefinedライトモードとダークモードのカスタムUIカラースキーム。

UIコントロールプロパティ

プロパティデフォルト説明
hideChartNavbooleanfalseチャートタブナビゲーションを非表示にし、単一チャートに制限。
hideSegmentNavbooleanfalseデータ/可視化セグメントナビゲーションを非表示。
hideProfilingbooleanfalseフィールドプロファイリング(分布プレビュー)を非表示。
toolbar{ extra?: ToolbarItemProps[]; exclude?: string[] }undefinedツールバーのカスタマイズ — 追加ボタンや組み込みボタンの除外。

データ機能プロパティ

プロパティデフォルト説明
scalesIChannelScalesundefinedビジュアルチャネルのカスタムスケール設定。
geographicDataIGeographicData & { key: string }undefined地理的可視化用のGeoJSON/TopoJSONデータ。
geoListIGeoDataItem[]undefined選択可能な地理データセットのリスト。
experimentalFeatures{ computedField?: boolean }undefined計算フィールドなどの実験的機能を有効化。

i18nプロパティ

プロパティデフォルト説明
i18nLangstringundefined言語コード(例: 'en-US''zh-CN''ja-JP')。
i18nResourcesRecord<string, Record<string, string>>undefinedカスタム翻訳リソース。

Refと状態プロパティ

プロパティ説明
refReact.Ref<IGWHandler>ハンドラーAPIにアクセスするためのref(チャートエクスポート、タブ切り替えなど)。
storeRefReact.RefObject<CommonStore>内部状態ストアへのref。
keepAliveboolean | stringアンマウント時にコンポーネントの状態を保持。複数インスタンスの場合は文字列をユニークキーとして渡す。
onMetaChange(fid: string, meta: Partial<IMutField>) => voidフィールドメタデータ変更時のコールバック。

エラーハンドリング

プロパティ説明
onError(err: Error) => voidエラーハンドリング用コールバック。

スタイリング

プロパティ説明
classNamestringルート要素に適用されるCSSクラス。
styleReact.CSSPropertiesルート要素に適用されるインラインスタイル。

Refハンドラー (IGWHandler)

React refを通じてハンドラーにアクセスし、コンポーネントをプログラムで制御します:

import { useRef } from 'react';
import { GraphicWalker } from '@kanaries/graphic-walker';
import type { IGWHandler } from '@kanaries/graphic-walker';
 
function App() {
  const gwRef = useRef<IGWHandler>(null);
 
  return <GraphicWalker ref={gwRef} data={data} fields={fields} />;
}

ハンドラーのプロパティとメソッド

メンバー説明
chartCountnumberチャートタブの総数。
chartIndexnumber現在選択されているチャートタブのインデックス。
openChart(index)(index: number) => void特定のチャートタブに切り替え。
renderStatus'computing' | 'rendering' | 'idle' | 'error'アクティブチャートの現在のレンダリング状態。
onRenderStatusChange(cb)(cb: Function) => () => voidレンダリング状態の変更をリッスン。dispose関数を返す。
exportChart(mode?)(mode?: 'svg' | 'data-url') => Promise<IChartExportResult>現在のチャートをエクスポート。デフォルトは'svg'
exportChartList(mode?)(mode?: 'svg' | 'data-url') => AsyncGenerator各チャートのエクスポートデータを返す非同期ジェネレーター。

エクスポート例

async function handleExport() {
  if (!gwRef.current) return;
 
  // Export current chart as SVG
  const result = await gwRef.current.exportChart('svg');
  console.log(result.title, result.charts);
 
  // Export all charts
  for await (const item of gwRef.current.exportChartList('data-url')) {
    console.log(`Chart ${item.index + 1}/${item.total}:`, item.data.title);
  }
}

使用例

基本的なエクスプローラー

import { GraphicWalker } from '@kanaries/graphic-walker';
 
function Explorer({ data, fields }) {
  return <GraphicWalker data={data} fields={fields} />;
}

ダークモードとテーマ付き

<GraphicWalker
  data={data}
  fields={fields}
  appearance="dark"
  vizThemeConfig="streamlit"
/>

ツールバーのカスタマイズ

<GraphicWalker
  data={data}
  fields={fields}
  toolbar={{
    exclude: ['export_chart'],
    extra: [
      {
        key: 'custom-save',
        label: 'Save',
        icon: SaveIcon,
        onClick: handleSave,
      },
    ],
  }}
/>

サーバー側計算

import { GraphicWalker } from '@kanaries/graphic-walker';
import type { IComputationFunction } from '@kanaries/graphic-walker';
 
const computation: IComputationFunction = async (payload) => {
  const response = await fetch('/api/compute', {
    method: 'POST',
    body: JSON.stringify(payload),
    headers: { 'Content-Type': 'application/json' },
  });
  return response.json();
};
 
function App() {
  return (
    <GraphicWalker
      computation={computation}
      fields={fields}
    />
  );
}