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 传递数据 → 生成两种产物 → 先预览再探索
01 准备序列数据 → 02 向 .NET 传递数据 → 03 生成两种产物 → 04 先预览再探索点击图示可放大至原始尺寸。
1.准备序列数据
组织 NumPy 数组和图表选项。可使用 SQL 查询结果,但 Trino、Iceberg 示例基础设施不是图表库的必需组件。
2.向 .NET 传递数据
Python 包装器写入 spec.json 和各序列的 Arrow IPC 文件,再启动 chartgen。C# 解析列角色并组装 ChartModel。
3.生成两种产物
保存 .chart 包,并可选生成 Skia PNG。FastAPI 示例返回 imageDataUrl,以及单独下载图表文件的 chartUrl。
4.先预览再探索
先展示 PNG,点击后获取 .chart。浏览器解码 ZIP 和 SCPT 数据,在 Canvas2D 中处理缩放、平移和提示框交互。

Python、FastAPI 和 Trino 均为可选集成。Web 示例的临时文件缓存不是持久存储;浏览器使用自身 Canvas 引擎渲染下载的 .chart 数据。

查看GitHub文档与代码

通过可视化示例了解图表功能

展示标记、坐标轴、注释与统计叠加如何应用于原生图表。

通过可视化示例了解图表功能 — 标记 · 坐标轴 · 注释 · 统计
展示标记、坐标轴、注释与统计叠加如何应用于原生图表。点击图示可放大至原始尺寸。
1.标记
使用形状、气泡、颜色和图像编码数值。
2.坐标轴
选择尺度、时间格式、副轴与纵横比。
3.注释
添加阈值、区域、文本、趋势线与移动平均。
4.统计
查看密度、均值、中位数与偏差带。

示例用于说明原生功能;Web Canvas 查看器有独立支持范围。

查看GitHub文档与代码

大型图表的交互、保存与渲染

展示原生交互与导出路径,并明确性能数据来自仓库报告。

大型图表的交互、保存与渲染 — 交互 · 数据处理 · 输出 · 性能理解
展示原生交互与导出路径,并明确性能数据来自仓库报告。点击图示可放大至原始尺寸。
1.交互
缩放、选择并将点标识符传给宿主应用。
2.数据处理
追加点、切换系列样式并处理缺失值。
3.输出
保存图表状态并使用原生图像和矢量导出。
4.性能理解
保留原始数组并减少可见范围与绘制顶点。

原生端与 Web 共享 .chart 格式,不保证像素一致。浏览器 SVG/PDF 导出和流式追加不在当前 Web 支持范围。

查看GitHub文档与代码

功能画廊

多序列 · 值-颜色映射 · 密度六边形分箱 · 副 Y 轴 · 时间轴 · 线+面 — 以单一渲染器提供商用级图表功能。

ScatterSharp 功能画廊 — 多序列、值-颜色映射、密度六边形分箱、副 Y 轴、时间轴、线+面

高级分析功能

密度热图/六边形分箱 · 线/面 · 误差棒 · 橡皮筋选择 — 连分析状态也会被保存和恢复。

ScatterSharp 高级功能 — 密度热图/六边形分箱、线/面、误差棒、橡皮筋选择

试用 ScatterSharp

以 Apache License 2.0 开源。可在 GitHub 查看源码与示例(10M 基准测试、WinForms 演示、功能展示)。