FastCharts.Core 1.2.0

dotnet add package FastCharts.Core --version 1.2.0
                    
NuGet\Install-Package FastCharts.Core -Version 1.2.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="FastCharts.Core" Version="1.2.0" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="FastCharts.Core" Version="1.2.0" />
                    
Directory.Packages.props
<PackageReference Include="FastCharts.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 FastCharts.Core --version 1.2.0
                    
#r "nuget: FastCharts.Core, 1.2.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 FastCharts.Core@1.2.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=FastCharts.Core&version=1.2.0
                    
Install as a Cake Addin
#tool nuget:?package=FastCharts.Core&version=1.2.0
                    
Install as a Cake Tool

FastCharts - High-Performance .NET Charting Library

<div align="center"> <img src="mabinogi-icon.png" alt="FastCharts" width="128" height="128">

NuGet Downloads Build Status License: MIT </div>

🌟 What is FastCharts?

FastCharts is a high-performance .NET charting library designed for real-time applications, financial dashboards, and data visualization scenarios requiring smooth rendering of massive datasets (10M+ points).

⚑ Key Features

  • πŸš€ Real-time Performance: 60 FPS rendering with LTTB decimation
  • πŸ“Š Rich Chart Types: Line, Scatter, Bar, Area, Band, OHLC, ErrorBar
  • 🎯 Multi-Axis Support: Independent left/right Y axes
  • πŸ“ˆ Advanced Axes: Linear, Logarithmic, Category with custom bases
  • πŸ”„ Streaming Data: Rolling windows with efficient append operations
  • 🎨 Interactive: Pan, zoom, crosshair, pinned tooltips
  • πŸ“ Annotations: Lines, ranges, labels with full styling
  • πŸ’Ύ Export Ready: PNG + SVG (vector) export, clipboard integration
  • 🌐 Cross-Platform: Windows, macOS, Linux support
  • πŸ—οΈ MVVM Ready: Full WPF integration with ReactiveUI

🎯 Perfect For

  • Financial Applications: Trading platforms, market analysis
  • Real-Time Dashboards: IoT monitoring, system metrics
  • Scientific Visualization: Research data, sensor readings
  • Business Intelligence: KPI dashboards, analytics
  • Desktop Applications: WPF apps with rich data visualization

πŸ“¦ Quick Start

dotnet add package FastCharts.Wpf

Basic Usage

XAML:

<Window xmlns:fc="clr-namespace:FastCharts.Wpf.Controls;assembly=FastCharts.Wpf">
    <fc:FastChart Model="{Binding ChartModel}" />
</Window>

C# Code β€” a curve from a dictionary, zero ceremony:

using FastCharts.Core;

var model = new ChartModel();

// Any Dictionary<double, double> plots as a sorted line in one call
var measures = new Dictionary<double, double> { [0] = 10, [1] = 20, [2] = 15, [3] = 25 };
model.AddSeries(measures, "Sales Data");

// Y values only? X becomes the index
model.AddSeries(new[] { 10.0, 20.0, 15.0, 25.0 }, "Quick values");

// Other kinds, same one-liner
model.AddSeries(measures, ChartKind.Area);      // or Scatter, Bar, StepLine

// Make it pretty in two more lines
var curve = model.AddSeries(measures, "Smooth");
curve.Smoothing = LineSmoothing.Spline;         // smooth curve
curve.ShowMarkers = true;                       // dots on data points
model.Theme = ChartThemes.Dark;                 // runtime theme switch

// Bind to your ViewModel
this.DataContext = new { ChartModel = model };

Need full control? Build the series yourself:

using FastCharts.Core.Series;
using FastCharts.Core.Primitives;

model.AddSeries(new LineSeries(new[] { new PointD(0, 10), new PointD(1, 20) })
{
    Title = "Sales Data",
    StrokeThickness = 2
});

Real-Time Streaming Example

// Create streaming series with rolling window
var streamingSeries = new StreamingLineSeries {
    Title = "Live Data",
    MaxPointCount = 1000, // Keep last 1000 points
    RollingWindowDuration = TimeSpan.FromMinutes(5)
};

// Add real-time data
streamingSeries.AppendPoint(new PointD(DateTime.Now.Ticks, sensorValue));

model.AddSeries(streamingSeries);

Multi-Axis Example

// Create chart with multiple Y axes
var model = new ChartModel();

// Add left axis series (temperature)
model.AddSeries(new LineSeries(temperatureData) {
    Title = "Temperature (Β°C)",
    YAxisIndex = 0, // Left Y axis
    Color = ColorRgba.Red
});

// Add right axis series (pressure) 
model.AddSeries(new LineSeries(pressureData) {
    Title = "Pressure (hPa)", 
    YAxisIndex = 1, // Right Y axis
    Color = ColorRgba.Blue
});

πŸ—οΈ Architecture

FastCharts uses a clean, modular architecture:

β”œβ”€β”€ FastCharts.Core          # Core algorithms & abstractions
β”œβ”€β”€ FastCharts.Rendering.Skia # Cross-platform rendering engine
└── FastCharts.Wpf           # WPF controls & MVVM integration

Package Selection Guide

Scenario Packages Needed
WPF Desktop App FastCharts.Wpf (includes others)
Cross-Platform Console FastCharts.Core + FastCharts.Rendering.Skia
Web API Chart Generation FastCharts.Core + FastCharts.Rendering.Skia
Business Logic Only FastCharts.Core

πŸ“Š Advanced Features

LTTB Decimation for Massive Datasets

var largeSeries = new LineSeries(millionsOfPoints) {
    EnableAutoResampling = true // Automatically reduces to screen resolution
};
// Maintains visual fidelity while ensuring 60 FPS performance

Performance Metrics Overlay

model.AddBehavior(new MetricsOverlayBehavior {
    ShowDetailed = true,
    Position = MetricsPosition.TopLeft
});
// Press F3 to toggle, F4 for detail level, F5 to reset

MVVM Data Binding (Observable Series)

// Bind a chart series directly to your ViewModel collection
var readings = new ObservableCollection<SensorReading>();

var series = new ObservableLineSeries(readings, nameof(SensorReading.Time), nameof(SensorReading.Temperature))
{
    Title = "Temperature",
    RefreshThrottle = TimeSpan.FromMilliseconds(50) // coalesce rapid updates (optional)
};

model.AddSeries(series);          // renders like any other series
readings.Add(new SensorReading()); // chart updates automatically

Interactive Behaviors

model.AddBehavior(new PanBehavior());
model.AddBehavior(new ZoomBehavior());
model.AddBehavior(new CrosshairBehavior());
model.AddBehavior(new PinnedTooltipBehavior()); // Right-click to pin tooltips

Annotations

// Add horizontal line annotation
model.AddAnnotation(new LineAnnotation {
    Type = LineAnnotationType.Horizontal,
    Value = 100,
    Label = "Target Value",
    Color = ColorRgba.Green
});

// Add range highlight
model.AddAnnotation(new RangeAnnotation {
    Type = RangeAnnotationType.Horizontal, 
    StartValue = 90,
    EndValue = 110,
    FillColor = ColorRgba.Green.WithAlpha(0.2f),
    Label = "Acceptable Range"
});

πŸš€ Performance

  • Rendering Speed: Up to 60 FPS for interactive charts
  • Memory Efficiency: Optimized for large datasets (10M+ points)
  • LTTB Algorithm: Reduces data while preserving visual fidelity
  • Hardware Acceleration: GPU-accelerated rendering via SkiaSharp
  • Streaming Optimized: Real-time updates with minimal overhead

🌐 Framework Support

Framework FastCharts.Core Rendering.Skia WPF
.NET Standard 2.0 βœ… βœ… ❌
.NET Framework 4.8 βœ… βœ… βœ…
.NET 6 βœ… βœ… βœ…
.NET 8 βœ… βœ… βœ…

Platforms: Windows, macOS, Linux (Core + Skia), Windows only (WPF)

Linux note: FastCharts.Rendering.Skia relies on SkiaSharp. On Linux, add the SkiaSharp.NativeAssets.Linux (or SkiaSharp.NativeAssets.Linux.NoDependencies) package to your application so the native libSkiaSharp library is deployed.

πŸ“– Documentation

🀝 Contributing

We welcome contributions! See our Contributing Guide for details.

Development Setup

git clone https://github.com/MabinogiCode/FastCharts.git
cd FastCharts
dotnet restore
dotnet build
dotnet test # full test suite should pass

πŸ“ License

This project is licensed under the MIT License - see the LICENSE file for details.

πŸ™ Acknowledgments


<div align="center"> <strong>Made with ❀️ for the .NET community</strong><br> <sub>FastCharts - Where performance meets visualization</sub> </div>

Product Compatible and additional computed target framework versions.
.NET net5.0 was computed.  net5.0-windows was computed.  net6.0 was computed.  net6.0-android was computed.  net6.0-ios was computed.  net6.0-maccatalyst was computed.  net6.0-macos was computed.  net6.0-tvos was computed.  net6.0-windows was computed.  net7.0 was computed.  net7.0-android was computed.  net7.0-ios was computed.  net7.0-maccatalyst was computed.  net7.0-macos was computed.  net7.0-tvos was computed.  net7.0-windows was computed.  net8.0 is compatible.  net8.0-android was computed.  net8.0-browser was computed.  net8.0-ios was computed.  net8.0-maccatalyst was computed.  net8.0-macos was computed.  net8.0-tvos was computed.  net8.0-windows was computed.  net9.0 was computed.  net9.0-android was computed.  net9.0-browser was computed.  net9.0-ios was computed.  net9.0-maccatalyst was computed.  net9.0-macos was computed.  net9.0-tvos was computed.  net9.0-windows was computed.  net10.0 was computed.  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. 
.NET Core netcoreapp2.0 was computed.  netcoreapp2.1 was computed.  netcoreapp2.2 was computed.  netcoreapp3.0 was computed.  netcoreapp3.1 was computed. 
.NET Standard netstandard2.0 is compatible.  netstandard2.1 was computed. 
.NET Framework net461 was computed.  net462 was computed.  net463 was computed.  net47 was computed.  net471 was computed.  net472 was computed.  net48 was computed.  net481 was computed. 
MonoAndroid monoandroid was computed. 
MonoMac monomac was computed. 
MonoTouch monotouch was computed. 
Tizen tizen40 was computed.  tizen60 was computed. 
Xamarin.iOS xamarinios was computed. 
Xamarin.Mac xamarinmac was computed. 
Xamarin.TVOS xamarintvos was computed. 
Xamarin.WatchOS xamarinwatchos 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 FastCharts.Core:

Package Downloads
FastCharts.Rendering.Skia

Cross-platform rendering engine for FastCharts using SkiaSharp. Supports Windows, macOS, and Linux with hardware acceleration. Includes PNG export, vector graphics, and high-performance chart rendering.

FastCharts.Wpf

WPF controls for FastCharts charting library. Includes FastChart control with full MVVM support, interactive behaviors, and reactive UI integration. Supports .NET Framework 4.8, .NET 6, and .NET 8.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
1.2.0 55 7/6/2026
1.0.0 335 12/15/2025

FastCharts v1.2.0 β€” "Everyday chart"

- Markers on LineSeries (ShowMarkers, MarkerSize, MarkerShape incl. Diamond/Cross/Plus)
- Spline smoothing: series.Smoothing = LineSmoothing.Spline
- SVG vector export: SkiaChartRenderer.ExportSvg / ChartExportService.ExportToSvgFile
- Dynamic themes: ChartThemes.Light/Dark/HighContrast + CustomTheme palettes
- KISS: model.AddSeries(data, ChartKind.Area|Scatter|Bar|StepLine)

See CHANGELOG.md for details.