Open Source

ScatterSharp

大量のセンサーデータ向け C#/.NET 散布図ライブラリです。ChartModel のデータ・スタイル・ビューポートを .chart に保存・復元し、Python 連携と別実装の Canvas Web ビューアも提供します。

Apache License 2.0 · オープンソースGitHub リポジトリ

チャートモデルから保存と描画へ

データ・スタイル・ビューポートを含む ChartModel を保存し、ネイティブ画面、ファイル出力、別実装の Web ビューアで利用します。

チャートモデルから保存と描画へ — 構成要素と実行境界を示す図: チャートモデルを構成 → 状態を保存・復元 → 表示範囲を選んで描画 → 表示して操作
01 チャートモデルを構成 → 02 状態を保存・復元 → 03 表示範囲を選んで描画 → 04 表示して操作図を選択すると元のサイズに拡大できます。
1.チャートモデルを構成
ScatterChart API でシリーズ・座標・軸・注釈・ビューポート・選択状態を構成します。等間隔 X は開始値と間隔で表し、PointIds で元データの識別子を関連付けられます。
2.状態を保存・復元
ChartSerializer が manifest.json・chart.json・blobs/*.bin を .chart ZIP に記録します。大容量座標はバイナリ保存し、精度と圧縮を選択できます。
3.表示範囲を選んで描画
ChartRenderer がレイアウトとスケールを計算し、VisibleRange と MinMax・M4 などを適用します。IRenderSurface を通じてシリーズとオーバーレイを描画します。
4.表示して操作
ネイティブホストと PNG・SVG・PDF 出力は Skia を使用します。入力は ChartInteraction に渡され、Web は .chart を読み込んで別の Canvas2D エンジンで表示します。

WPF・WinForms・ヘッドレス出力は Skia を共有します。Web Canvas は同じ .chart 形式を読む別実装であり、両レンダラー間のピクセル一致は保証しません。

GitHubの文書・コードを見る

Python データから Web チャートへ

Python がデータとオプションを準備し、chartgen が .chart と任意の PNG を生成します。Web サンプルは画像プレビューから対話型チャートへ移行します。

Python データから Web チャートへ — 構成要素と実行境界を示す図: シリーズデータを準備 → .NET にデータを渡す → 2 種の成果物を生成 → プレビューから探索へ
01 シリーズデータを準備 → 02 .NET にデータを渡す → 03 2 種の成果物を生成 → 04 プレビューから探索へ図を選択すると元のサイズに拡大できます。
1.シリーズデータを準備
NumPy 配列とチャートオプションを構成します。SQL 結果も利用できますが、Trino・Iceberg のサンプル基盤は必須ではありません。
2..NET にデータを渡す
Python ラッパーが spec.json とシリーズ別 Arrow IPC ファイルを書き、chartgen を起動します。C# がカラムの役割を解釈して ChartModel を組み立てます。
3.2 種の成果物を生成
.chart を保存し、必要に応じて Skia PNG も生成します。FastAPI サンプルは imageDataUrl と、チャートファイル取得用の chartUrl を返します。
4.プレビューから探索へ
最初に PNG を表示し、クリック時に .chart を取得します。ブラウザが ZIP・SCPT を解釈し、Canvas2D でズーム・パン・ツールチップを処理します。

Python・FastAPI・Trino は任意の連携です。Web サンプルの一時ファイルキャッシュは永続ストレージではなく、ブラウザが取得した .chart を独自の Canvas エンジンで描画します。

GitHubの文書・コードを見る

視覚例で見るチャート機能

マーカー、軸、注釈、統計表示がネイティブチャートにどう反映されるかを示します。

視覚例で見るチャート機能 — マーカー · 軸 · 注釈 · 統計
マーカー、軸、注釈、統計表示がネイティブチャートにどう反映されるかを示します。図を選択すると元のサイズに拡大できます。
1.マーカー
形状、バブル、色、画像で値を表現します。
2.軸
尺度、時刻表示、補助軸、縦横比を選択します。
3.注釈
閾値、領域、文字、トレンド、移動平均を追加します。
4.統計
密度表示、平均、中央値、偏差の帯を確認します。

ネイティブ機能の説明例です。Web Canvas ビューアの対応範囲は別途です。

GitHubの文書・コードを見る

大規模チャートの操作、保存、描画

ネイティブの操作と出力経路を確認し、性能値はリポジトリ報告として示します。

大規模チャートの操作、保存、描画 — 操作 · データ処理 · 出力 · 性能の理解
ネイティブの操作と出力経路を確認し、性能値はリポジトリ報告として示します。図を選択すると元のサイズに拡大できます。
1.操作
拡大、選択、点の識別子のホスト転送を行います。
2.データ処理
点の追加、系列表現、欠損値を扱います。
3.出力
状態を保存し、ネイティブ画像とベクター出力を利用します。
4.性能の理解
元配列を保持し、描画範囲と頂点を削減します。

共通なのは .chart 形式でありピクセル一致ではありません。ブラウザの SVG/PDF 出力とストリーミング追加は現行 Web 対応範囲外です。

GitHubの文書・コードを見る

機能ギャラリー

マルチシリーズ · 値-色マッピング · 密度ヘックスビン · 第 2 Y 軸 · 時間軸 · 線+領域 — 商用チャート水準の機能を単一レンダラーで提供します。

ScatterSharp 機能ギャラリー — マルチシリーズ、値-色マッピング、密度ヘックスビン、第 2 Y 軸、時間軸、線+領域

高度な分析機能

密度ヒートマップ/ヘックスビン · 線/領域 · 誤差バー · ラバーバンド選択 — 分析状態まで保存・復元されます。

ScatterSharp 高度な機能 — 密度ヒートマップ/ヘックスビン、線/領域、誤差バー、ラバーバンド選択

ScatterSharp を使ってみる

Apache License 2.0 で公開されたオープンソースです。GitHub でソースとサンプル(10M ベンチ・WinForms デモ・機能ショーケース)をご確認いただけます。