FastCharts.Core
1.2.0
dotnet add package FastCharts.Core --version 1.2.0
NuGet\Install-Package FastCharts.Core -Version 1.2.0
<PackageReference Include="FastCharts.Core" Version="1.2.0" />
<PackageVersion Include="FastCharts.Core" Version="1.2.0" />
<PackageReference Include="FastCharts.Core" />
paket add FastCharts.Core --version 1.2.0
#r "nuget: FastCharts.Core, 1.2.0"
#:package FastCharts.Core@1.2.0
#addin nuget:?package=FastCharts.Core&version=1.2.0
#tool nuget:?package=FastCharts.Core&version=1.2.0
FastCharts - High-Performance .NET Charting Library
<div align="center"> <img src="mabinogi-icon.png" alt="FastCharts" width="128" height="128">
π 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
For WPF Applications (Recommended)
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.Skiarelies on SkiaSharp. On Linux, add theSkiaSharp.NativeAssets.Linux(orSkiaSharp.NativeAssets.Linux.NoDependencies) package to your application so the nativelibSkiaSharplibrary is deployed.
π Documentation
- π Getting Started | DΓ©marrage Rapide
- π Chart Types Guide | Guide des Types de Graphiques
- π¨ Styling & Themes | Style & ThΓ¨mes
- β‘ Performance Guide | Guide Performance
- π API Reference | RΓ©fΓ©rence API
- π§ͺ Examples & Demos | Exemples & DΓ©mos
π€ 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
- Built with SkiaSharp for cross-platform graphics
- Inspired by LiveCharts2 and ScottPlot
- LTTB algorithm implementation based on research by Sveinn Steinarsson
<div align="center"> <strong>Made with β€οΈ for the .NET community</strong><br> <sub>FastCharts - Where performance meets visualization</sub> </div>
| Product | Versions 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. |
-
.NETStandard 2.0
- DynamicData (>= 9.4.1)
- ReactiveUI (>= 22.3.1)
- System.Reactive (>= 6.1.0)
- System.Runtime.CompilerServices.Unsafe (>= 6.1.2)
-
net8.0
- DynamicData (>= 9.4.1)
- ReactiveUI (>= 22.3.1)
- System.Reactive (>= 6.1.0)
- System.Runtime.CompilerServices.Unsafe (>= 6.1.2)
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.
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.