返回首页
Aioros.Graphs · C# 版 d3

d3 的绘图引擎,逐字节一致

从 d3 移植的比例尺、形状、曲线、层级、弦图、桑基图和力导向布局,并以 d3 自身的输出作为测试基准:SVG 路径数据逐字节一致,由 C# 结构体和 span 写出,每个点都不分配内存。
19/19
个图表与 d3 逐字节一致
2.7×
在这些图表上比 d3 更快
3.8×
在 52 项微基准测试中更快
如何测量
每个移植的函数都以 d3 自己生成的测试数据为基准运行:刻度和标签逐位一致,SVG 路径数据逐字节一致。计时为在实验室运行器上对比 Node 中 d3 7.9.0 的几何平均值(见 Graphs 仓库 docs/performance-history.md 第 6 节)。

实时渲染,来自本服务器

下面的每个示例都是由你正在访问的服务器渲染的 XAML,同一份 XAML 也能在桌面端原生运行。
每个图形都是调用 Aioros.Graphs 的小型 XAML 控件:在 Web 上其路径以 SVG 写入页面,在桌面端则是原生几何图形。
力导向网络
分区旭日图
弦图
圆形打包图
整齐树
流图

XAML 代码

Drawing/Sunburst.cs
var tree = Hierarchy.FromNested(root, n => n.Children, out _) .Sum(values); var parts = Partition.Compute(tree, new PartitionOptions { Width = 2 * Math.PI, Height = radius }); var arc = new ArcShape(parts.Y0[node], parts.Y1[node], parts.X0[node], parts.X1[node]); Arc.Write(ref sink, arc); // d3.arc()(…), byte for byte, into SVG or native geometry