Open-source charting engine for .NET and Python — by KEDevO
Chartexa Community is a rendering-backend-agnostic charting engine that cleanly separates data, logic, commands, rendering, and interaction.
Built from scratch in C#/.NET 10, it is designed for high-performance visualization with support for multiple rendering backends.
- High-performance rendering pipeline
- Pluggable renderers (WPF, Skia, Web/JSON export)
- .NET and Python support
- Modular architecture
- Interaction tools (zoom, pan, cursor, tooltips)
# Core engine
dotnet add package Chartexa.Core
# Renderers (choose as needed)
dotnet add package Chartexa.Rendering.Wpf
dotnet add package Chartexa.Rendering.Skia
dotnet add package Chartexa.Rendering.Web
# Optional modules
dotnet add package Chartexa.Data
dotnet add package Chartexa.DataSources
dotnet add package Chartexa.Layout
dotnet add package Chartexa.Playback
dotnet add package Chartexa.Modifiers
dotnet add package Chartexa.Themingpip install chartexaRequires the .NET 10 Runtime to be installed.
<Window xmlns:chartexa="clr-namespace:Chartexa.Rendering.Wpf.Controls;assembly=Chartexa.Rendering.Wpf">
<chartexa:ChartSurface x:Name="Chart"/>
</Window>using Chartexa.Core.Axes;
using Chartexa.Data.Series;
Chart.XAxes.Add(new NumericAxis { Id = "X" });
Chart.YAxes.Add(new NumericAxis { Id = "Y" });
var series = new XYDataSeries();
series.Append(new[] { 1.0, 2.0, 3.0, 4.0 }, new[] { 10.0, 20.0, 15.0, 30.0 });
Chart.Series.Add(new FastLineRenderableSeries { DataSeries = series });
Chart.InvalidateChart();import chartexa as cx
# One-liner convenience functions
cx.line([10, 20, 15, 30, 25]).save("chart.png")
# Fluent API with multiple series
(cx.Chart(800, 600)
.line([1, 2, 3, 4], [10, 20, 15, 30], stroke="#4FC3F7", label="Revenue")
.scatter([1, 2, 3, 4], [12, 18, 17, 28], fill="red", label="Targets")
.save("multi_series.png"))
# Financial charts from Pandas DataFrames
import pandas as pd
df = pd.read_csv("stock_data.csv")
cx.candlestick(df).save("candlestick.png")
# Multi-panel dashboards
fig, axes = cx.subplots(2, 2)
axes[0, 0].line([1, 2, 3], [10, 20, 15])
axes[0, 1].scatter([1, 2, 3], [30, 10, 25])
fig.save("dashboard.png")The Python package provides the core charting API, NumPy/Pandas integration, Jupyter notebook support, and image export. See the PyPI page for full documentation.
Chartexa uses a clean, layered architecture:
User Code → ChartSurface → Axes + Series
→ RenderPipeline → RenderCommand[]
→ Renderer (WPF / Skia / Web)
Full architecture documentation is available in the repository (see ARCHITECTURE.md).
| Package | Description | Platform |
|---|---|---|
| Chartexa.Core | Core engine primitives | Cross-platform |
| Chartexa.Data | Data series and processing | Cross-platform |
| Chartexa.DataSources | Data source abstraction layer | Cross-platform |
| Chartexa.Layout | Dashboard layout system | Cross-platform |
| Chartexa.Rendering.Wpf | WPF renderer + controls | Windows (WPF) |
| Chartexa.Rendering.Skia | SkiaSharp cross-platform renderer | Cross-platform |
| Chartexa.Rendering.Web | WebAssembly / JSON export | Cross-platform |
| Chartexa.Modifiers | Interaction modifiers | Windows (WPF) |
| Chartexa.Theming | Theme system | Cross-platform |
| Chartexa.Playback | Playback and timeline utilities | Cross-platform |
| Chartexa.Python | Python interop bridge | Cross-platform |
- .NET 10 SDK
- Windows (required for WPF and DirectX renderer development)
dotnet build
dotnet testRun the WPF demo:
dotnet run --project examples/WpfDemoChartexa is structured for dual distribution:
- NuGet packages for .NET consumers
- PyPI package for Python consumers
For maintainers, release workflow and publishing commands are documented in docs/PUBLISHING.md.
MIT — see LICENSE for details.
Chartexa Community is and will remain free and open-source under the MIT license.
This repository is the Community edition.
Commercial tiers are intentionally hidden for now until those offerings are production-ready.