ScatterSharp
面向海量传感器数据的高性能 C#/.NET 散点图(Scatter Chart)库。可将图表状态整体序列化,重新加载后连缩放状态都立即完全一致地渲染 — 每个序列可交互处理最多 1,000 万(10M)个点。
功能画廊
多序列 · 值-颜色映射 · 密度六边形分箱 · 副 Y 轴 · 时间轴 · 线+面 — 以单一渲染器提供商用级图表功能。

核心亮点
每序列最多 1,000 万点
按像素列 min/max 降采样,10M 点也能交互渲染 — 1920×1080 下约 110ms。
混合序列化 (.chart)
配置存为 JSON,海量坐标存为二进制 blob,打包进 ZIP 容器 — 连保存的缩放与选择状态也原样恢复。
单一渲染器,三种后端
仅凭 SkiaSharp 一套渲染器,WPF · WinForms · 无头(PNG/SVG/PDF)输出像素级一致。
数据库回溯交互
点击数据点即可回溯到源数据库行(PointIds + PointClicked) — 支持逐点自定义提示框与多序列共享提示框。
主要功能
所有功能无一遗漏地承载于 ChartModel,并完整通过序列化往返。
标记 · 数据点
6 种标记形状,大小/颜色/不透明度,气泡(逐点大小),值-颜色映射+色条,以及图像标记。
交互
提示框+十字线、缩放框(保持纵横比)、按轴缩放、橡皮筋选择(可保存)、图例点击切换、实时流式追加。
坐标轴
线性/对数/时间轴(标签自动细分)、副 Y 轴、反向轴、类别轴、固定纵横比、按轴指定字体。
标注 · 分析
阈值线/区带/矩形/文本标注,趋势线+移动平均,密度热图/六边形分箱,均值·中位数·±kσ 统计区带。
样式 · 导出
亮色/暗色主题+调色板,按元素指定字体,PNG·SVG·PDF(矢量)·剪贴板导出,字体回退支持韩文等非拉丁文本。
数据
10M 降采样、实时追加(滚动窗口)、线/面/柱模式、误差棒、NaN/缺失值处理、SoA + Uniform X 内存优化。
高级分析功能
密度热图/六边形分箱 · 线/面 · 误差棒 · 橡皮筋选择 — 连分析状态也会被保存和恢复。

10M 数据点实测性能
基于 1,000 万点序列(1920×1080),恢复后的渲染结果与原图逐像素一致。
完整渲染 (含统计区带)
缩放渲染 (裁剪)
保存大小 (f32 + deflate)
加载 (恢复 10M 点)
诀窍:先只裁剪可见区间(VisibleRange),再按像素列 min/max 降采样 — 即使源数据有 1,000 万点,实际绘制的顶点也仅在屏幕宽度量级。渲染循环运行在零分配(zero-allocation)热路径上。
架构 — 模型与渲染器分离
图表的全部状态由一个纯 POCO 的 ChartModel 表达,渲染器只接受这个模型作为输入 — "加载 → 渲染"即等于"保存后立即绘制"。