Open Source

ScatterSharp

大量のセンサーデータのための高性能 C#/.NET 散布図(Scatter Chart)ライブラリです。チャートの状態を丸ごとシリアライズし、読み込み直せばズーム状態まで即座に同一レンダリング — シリーズあたり最大 1,000 万(10M)点をインタラクティブに扱えます。

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

機能ギャラリー

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

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

主要ハイライト

01

シリーズあたり最大 1,000 万点

ピクセル列ごとの min/max ダウンサンプルで 10M 点もインタラクティブにレンダリング — 1920×1080 で約 110ms。

02

ハイブリッドシリアライズ (.chart)

設定は JSON、大容量座標はバイナリ blob を ZIP コンテナに — 保存したズーム・選択状態までそのまま復元します。

03

単一レンダラー、3 バックエンド

SkiaSharp ひとつで WPF · WinForms · ヘッドレス(PNG/SVG/PDF)がピクセル単位で同一の結果を出します。

04

DB 逆トレース対話

点をクリックすると元の DB 行へ逆トレース(PointIds + PointClicked) — ポイント別カスタムツールチップ、マルチシリーズ共有ツールチップ。

主な機能

すべての機能が漏れなく ChartModel に載り、シリアライズをラウンドトリップします。

マーカー · ポイント

6 種のマーカー形状、サイズ・色・不透明度、バブル(点別サイズ)、値-色マッピング+カラーバー、画像マーカーに対応。

インタラクション

ツールチップ+クロスヘア、ズームボックス(縦横比維持)、軸別ズーム、ラバーバンド選択(保存対象)、凡例クリックトグル、リアルタイム append。

線形/対数/時間軸(ラベル自動細分)、第 2 Y 軸、反転軸、カテゴリ軸、縦横比固定、軸別フォント指定。

注釈 · 分析

しきい線/バンド/矩形/テキスト注釈、トレンドライン+移動平均、密度ヒートマップ/ヘックスビン、平均・中央値・±kσ 統計バンド。

スタイル · 出力

ライト/ダークテーマ+パレット、要素別フォント、PNG·SVG·PDF(ベクター)·クリップボード出力、フォントフォールバックで非ラテン文字も描画。

データ

10M ダウンサンプル、リアルタイム append(ローリングウィンドウ)、線/領域/バーモード、誤差バー、NaN/欠測処理、SoA + Uniform X メモリ最適化。

高度な分析機能

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

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

10M ポイント実測性能

1,000 万点シリーズ基準(1920×1080)。復元後のレンダリング結果は元とピクセル単位で一致します。

~110ms

フルレンダリング (統計バンド含む)

~72ms

ズームレンダリング (カリング)

~33MB

保存サイズ (f32 + deflate)

~330ms

ロード (10M 復元)

秘訣: まず可視区間だけカリング(VisibleRange)し、次にピクセル列ごとの min/max でダウンサンプル — 元が 1,000 万点でも実際に描く頂点は画面幅程度に収まります。レンダーループはゼロアロケーションのホットパスで動作します。

アーキテクチャ — モデルとレンダラーの分離

チャートの全状態は純粋 POCO の ChartModel ひとつで表現され、レンダラーはこのモデルだけを入力に取ります — 「読み込み → レンダリング」がそのまま「保存して即描画」になります。

Chart.Abstractions
純粋ドメインモデル + インターフェース + インタラクション (ChartInteraction · ViewportController · HitTester)
Chart.Serialization
ChartSerializer(ZIP .chart) · BinaryPointCodec · JSON コンバーター · SchemaMigrator
Chart.Rendering.Skia
ChartRenderer パイプライン · Downsampler · DensityRenderer · PNG/SVG エクスポーター
Chart.Wpf / .WinForms
薄い UI ホスト — 描画ロジックなし。入力をピクセルに変換し ChartInteraction に委譲
Chart
ScatterChart ファサード — 公開 API (AddSeries · Save · Load · RenderToPng)

ScatterSharp を使ってみる

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