Gravicode.Visual.Net.Core 1.0.0

dotnet add package Gravicode.Visual.Net.Core --version 1.0.0
                    
NuGet\Install-Package Gravicode.Visual.Net.Core -Version 1.0.0
                    
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="Gravicode.Visual.Net.Core" Version="1.0.0" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="Gravicode.Visual.Net.Core" Version="1.0.0" />
                    
Directory.Packages.props
<PackageReference Include="Gravicode.Visual.Net.Core" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add Gravicode.Visual.Net.Core --version 1.0.0
                    
#r "nuget: Gravicode.Visual.Net.Core, 1.0.0"
                    
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package Gravicode.Visual.Net.Core@1.0.0
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=Gravicode.Visual.Net.Core&version=1.0.0
                    
Install as a Cake Addin
#tool nuget:?package=Gravicode.Visual.Net.Core&version=1.0.0
                    
Install as a Cake Tool

Visual.Net

The Python visualization stack, rewritten for .NET 10 — three libraries with an idiomatic .NET API, plus a desktop IDE whose assistant writes visualization apps for you.

.NET 10 tests licence

Bahasa Indonesia: README.id.md

Library Python analogue Focus
Matplotlib.Net matplotlib Static 2D and 3D figures → PNG, JPEG, WebP, SVG, PDF
Plotly.Net plotly Interactive charts → standalone HTML
Seaborn.Net seaborn Statistical graphics over Matplotlib.Net
Visual.Net.Core matplotlib.colors, scipy.stats Colour, colormaps, scales, plotting statistics, datasets
Visual.Net.Interactive Polyglot Notebook formatters

Line chart

Quick start

git clone https://github.com/DotNetVibeCoderz/Vibe_Charting.git
cd Visual.Net
dotnet build
dotnet test

dotnet run --project samples/Matplotlib.Console
using Matplotlib.Net;
using Matplotlib.Net.Rendering;
using Matplotlib.Net.Styling;

var figure = new Figure(9, 5, style: PlotStyle.SeabornWhiteGrid());
var ax = figure.AddSubplot();

var x = Enumerable.Range(0, 400).Select(i => i * 4 * Math.PI / 399).ToArray();

ax.Plot(x, x.Select(Math.Sin).ToArray(), "sin(x)");
ax.Plot(x, x.Select(Math.Cos).ToArray(), "cos(x)", style: LineStyle.Dashed);

ax.SetTitle("Trigonometric functions");
ax.SetXLabel("x (radians)");
ax.Legend();

figure.Save("chart.png");   // or .svg, .pdf, .jpg, .webp

What is in the box

src/            five class libraries
samples/        console apps in C#, F# and VB.Net, an Avalonia gallery, a Blazor site
tools/          VisualGen — a desktop IDE whose assistant builds visualization apps
notebooks/      Polyglot notebooks
docs/           English, with Bahasa Indonesia in docs/id/
tests/          167 tests, including 12 image baselines
datasets/       Iris and Titanic
benchmarks/     the matplotlib comparison, both harnesses and the join script

VisualGen

A desktop IDE with an assistant, Jack — the Code Bender, that writes the files and runs the build itself rather than printing code for you to copy.

dotnet run --project tools/VisualGen

An editor with syntax highlighting and a file explorer, 12 project templates that all compile, and a chat panel backed by Semantic Kernel with kernel functions for project and file operations, build and run, web search, scraping, arithmetic, the clock, and a curated Visual.Net API reference.

Works with OpenAI, Azure OpenAI, Anthropic, Google and Ollama. Claude is served by a hand-written chat completion service, because Semantic Kernel has no official Anthropic connector.

Every template is verified in CI:

dotnet run --project tools/VisualGen -- --verify-templates
# All 12 templates build.

Design

Matplotlib.Net is the foundation. Seaborn.Net layers on it exactly as seaborn layers on matplotlib, so every seaborn call returns an ordinary Figure you can then adjust with the lower-level API. Plotly.Net is independent: it emits JSON, not pixels.

GraviNum ── GraviFrame ── Visual.Net.Core ──┬── Matplotlib.Net ── Seaborn.Net
                                            └── Plotly.Net

Two rendering backends, one drawing interface. IRenderer is small on purpose — paths, text, images, clipping. SkiaRenderer produces PNG, JPEG, WebP and PDF; SvgRenderer is hand-written so that text stays as <text> elements rather than being flattened to paths. Both draw the same geometry, so a figure looks identical in every format.

The numerics are borrowed, not rewritten. NdArray and DataFrame come from Gravicode.Science — GraviNum is the NumPy layer, GraviFrame the pandas layer. Reimplementing them would have been a worse copy of code that already exists and is tested.

Contours are triangulated, not marching-squared. Each grid cell is split into two triangles and the field is treated as linear inside each one. That costs twice the primitives but removes the saddle ambiguity entirely, so both the lines and the filled bands always close.

3D is orthographic with a painter's algorithm. Every 3D artist reduces to a stream of facets, and the scene depth-sorts the whole stream before drawing — which is what lets a surface, a wireframe and a scatter interleave correctly in one figure.

How it compares to matplotlib, plotly and seaborn

Visual.Net Python
What ports well
2D chart types line, scatter, bar, hist, step, stem, errorbar, fill, stack, box, violin, boxen, pie, imshow, contour, quiver, hist2d, hexbin ✔ all present
3D surface, wireframe, scatter3d, line3d, bar3d, contour3d
Projections rectilinear, polar, 3D ✔ (plus map projections via cartopy)
Output PNG, JPEG, WebP, SVG, PDF, GIF, APNG, PPTX, DOCX ✔ (plus PS, EPS; Office via extra packages)
Colormaps 60+, including the perceptual family ~170
Styles 13 built-in ~26
seaborn functions 20 (rel/dis/cat/reg/matrix/grid families) ~30
Plotly trace types 22 ~40
Where they differ
Text layout multi-line and wrapped, no maths full TeX subset via mathtext
Interactive backends none (file output instead) Qt, Tk, GTK, web
Animation GIF and APNG GIF, MP4, and the rest via ffmpeg
Performance 1.7x faster overall on ten figures; slower on filled contours see docs/Benchmarks.md
Latency to first chart no interpreter start-up interpreter plus import

The honest summary: Visual.Net covers the chart types you reach for daily and the output formats you ship, and does not attempt matplotlib's long tail — mathtext, interactive GUI backends, or map projections. The perceptual colormaps now ship matplotlib's own tables, so they match colour for colour. Where something remains approximate — the synthetic Make* datasets, GIF's 256-colour palette — it is documented rather than glossed over.

Scatter with colourbar Histogram and KDE
Subplot grid Annotated heatmap
Filled and line contours Box and violin
3D surface 3D wireframe
Polar, wind rose and radar Hexbin of 60,000 points
Date axes at four spans Animated wave

Seaborn.Net:

Pair grid Clustered heatmap
Distribution plots Regression plots
Box plot against letter-value plot PairGrid mapped explicitly

Plotly.Net writes HTML, so the samples in docs/charts/ are live — open any of them in a browser.

Samples

Sample What it shows
samples/Matplotlib.Console Every static chart type, saved to PNG, SVG and PDF
samples/Plotly.Console 13 interactive charts exported as HTML, including an animation
samples/Seaborn.Console Statistical graphics: pair grids, clustermaps, facets
samples/Visual.Net.Gallery Avalonia desktop gallery, with each chart's source in C#, F# and VB.Net
samples/Visual.Net.Web Blazor site: inline SVG, live plotly.js, an analytics dashboard
samples/Visual.Net.FSharp The same API from F#
samples/Visual.Net.VisualBasic The same API from VB.Net
dotnet run --project samples/Seaborn.Console
dotnet run --project samples/Visual.Net.Gallery
dotnet run --project samples/Visual.Net.Web        # then open the printed URL

Notebooks

#r "nuget: Gravicode.Visual.Net.Interactive"

using Seaborn.Net;
using Visual.Net.Core.Data;
using Visual.Net.Interactive;

VisualNetFormatters.Register();
Sns.SetTheme(SeabornStyle.WhiteGrid);

var data = Datasets.MakePenguins();
var (figure, ax) = Sns.Subplots(8, 4.5);
Sns.KdePlot(data, "body_mass_g", hue: "species", ax: ax, fill: true);

figure    // renders inline

Ready-made notebooks are in notebooks/.

Documentation

Roadmap and status

PLAN.md is the roadmap; Progress.md tracks what is done.

All ten stages are done, with one deliberate exception: the packages build and the release workflow is written, but nothing has been published to nuget.org — that needs an account and a key, and a published version can be delisted but never withdrawn.

The last two stages were performance (benchmarked against matplotlib, honestly, in docs/Benchmarks.md) and distribution (CI, image-comparison baselines, and a dotnet new template pack).

Licence

MIT.


Dibuat oleh Gravicode Studios, dipimpin oleh Kang Fadhil.

Product Compatible and additional computed target framework versions.
.NET net10.0 is compatible.  net10.0-android was computed.  net10.0-browser was computed.  net10.0-ios was computed.  net10.0-maccatalyst was computed.  net10.0-macos was computed.  net10.0-tvos was computed.  net10.0-windows was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages (2)

Showing the top 2 NuGet packages that depend on Gravicode.Visual.Net.Core:

Package Downloads
Gravicode.Plotly.Net

Plotly for .NET: interactive, JavaScript-backed charts exported as standalone HTML. Dibuat oleh Gravicode Studios, dipimpin oleh Kang Fadhil.

Gravicode.Matplotlib.Net

Matplotlib for .NET: 2D and 3D figures with PNG, SVG and PDF output. Dibuat oleh Gravicode Studios, dipimpin oleh Kang Fadhil.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
1.0.0 108 9/1/2026