Volver al inicio
Aioros.Graphs · d3 en C#

El motor de dibujo de d3, byte a byte

Escalas, formas, curvas, jerarquías, chords, sankeys y fuerzas portadas de d3 y probadas contra la salida del propio d3: los mismos datos de trazado SVG, byte a byte, escritos con structs y spans de C# sin asignar memoria por punto.
19/19
gráficas idénticas a d3, byte a byte
2.7×
más rápido que d3 en esas gráficas
3.8×
más rápido en 52 micro-benchmarks
Cómo se mide
Cada función portada se ejecuta contra fixtures que generó el propio d3: ticks y etiquetas bit a bit, datos de trazado SVG byte a byte. Los tiempos son medias geométricas contra d3 7.9.0 en Node en el runner del laboratorio (docs/performance-history.md en el repositorio de Graphs, sección 6).

En vivo, desde este servidor

Cada muestra de abajo es XAML renderizado por el servidor que estás leyendo, y el mismo XAML corre nativo en el escritorio.
Cada dibujo es un pequeño control XAML que llama a Aioros.Graphs: en la web sus trazados se escriben en la página como SVG, en el escritorio son geometría nativa.
Red de fuerzas
Sunburst de partición
Diagrama de cuerdas
Empaquetado de círculos
Árbol ordenado
Streamgraph

El 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