Best OxyPlot Alternative in 2026: GPU Rendering, 3D Charts, Commercial Support

Article

Jarkko-Tirkkonen

Jarkko Tirkkonen

Senior Developer

LinkedIn icon
Graphs displaying performance data and approval

OxyPlot has been a reliable reference point in the .NET scientific and engineering charting space for over a decade. MIT-licensed, platform-neutral in its rendering model (which is how it achieves coverage across WPF, WinForms, Xamarin, Avalonia, and MAUI from a single codebase), and covering the standard 2D chart types line, scatter, bar, pie, heatmap, contour, box plot that most scientific and engineering applications need. For teams working in .NET that need a dependency-free, zero-cost chart library for standard 2D visualization, OxyPlot has been a reasonable default choice.

The case for looking beyond OxyPlot becomes clear in specific situations. There is no GPU rendering OxyPlot’s platform-abstracted software renderer computes each chart element in a cross-platform way that works everywhere but isn’t optimized for the rendering bottleneck that large data volumes create. There are no 3D chart types whatsoever. The project’s maintenance history includes periods of slower development activity that the community has noted, creating uncertainty about long-term reliability for production-critical applications. And like all .NET-only libraries, OxyPlot leaves teams without a consistent visualization solution when they also need JavaScript web dashboards or Python data science notebooks.

1. When OxyPlot Is Not Enough

No GPU rendering the software renderer ceiling

OxyPlot’s design philosophy prioritizes platform abstraction. The rendering model computes chart geometry in a platform-neutral way that is then drawn by each target’s native graphics API. This is architecturally elegant it’s how the same OxyPlot codebase runs on WPF, WinForms, Xamarin, MAUI, and Avalonia. The cost is that the rendering is not optimized for any specific platform’s GPU capabilities. At moderate data volumes thousands to low hundreds of thousands of points this is not a meaningful constraint. At millions of data points, or sustained real-time streaming at high update rates, the CPU-sequential software renderer becomes the bottleneck in ways that no configuration option resolves.

No 3D chart types

OxyPlot’s chart catalog covers standard 2D scientific visualization: LineSeries, ScatterSeries, BarSeries, PieSeries, HeatMapSeries, ContourSeries, BoxPlotSeries, ErrorBarSeries, StairStepSeries. There are no 3D chart types of any kind. Surface charts for 3D function visualization, 3D scatter plots for multivariate data, 3D heatmaps for spectral analysis none of these exist in OxyPlot. For engineering simulation results, materials science data, financial risk surfaces, or any application that needs genuine three-dimensional data exploration, OxyPlot is a non-starter.

Maintenance activity concerns

OxyPlot is a community-maintained project with no commercial backing. GitHub commit history shows periods of slower development activity stretches where pull requests accumulated and releases were infrequent. This is common in open-source projects where the maintainer base is small, and it’s not a criticism of the contributors who maintain it. But for enterprise applications deployed in production environments where chart components are business-critical infrastructure, depending on community-only maintenance creates procurement risk that commercial alternatives resolve. A chart rendering library that falls behind on .NET version support or security patches can block deployment pipelines.

No JavaScript or Python equivalent

OxyPlot is .NET-only. Teams maintaining web frontends, Python data science notebooks, or both alongside .NET desktop applications have no OxyPlot equivalent for those layers. Visualization consistency across the full technology stack requires a separate library for each environment, with no shared concepts, API, or rendering characteristics between them.

2. What OxyPlot Does Genuinely Well

The right alternative depends entirely on which limitation is the actual trigger. OxyPlot earns its place in the ecosystem for specific reasons:

  • Broadest cross-platform .NET coverage: WPF, WinForms, Xamarin iOS and Android, Avalonia, MAUI no other free .NET chart library covers this full range from a single NuGet package.
  • Clean API for scientific chart types: The series model is straightforward for scientific use cases. Adding data points, configuring axes, and customizing appearance is intuitive for engineers and scientists who think in data series.
  • True cross-platform from a single codebase: If your application targets WPF on desktop and Xamarin or MAUI on mobile, OxyPlot’s platform-neutral design is genuinely valuable you write chart code once.
  • MIT license, no commercial restrictions: Zero cost with no commercial restrictions. For organizations that cannot use commercially-licensed libraries due to procurement policy, OxyPlot (like ScottPlot) removes the obstacle entirely.
  • Long-established track record: OxyPlot has been in use since 2012. Despite maintenance activity variability, the codebase is mature and many reported issues have been addressed over time.

3. Comparison Table

Library Platform GPU rendering 3D charts Commercial support MAUI/Xamarin Cross-language License
LightningChart .NET WinForms/WPF/UWP GPU Full 3D SLA Check current JS + Python Commercial
OxyPlot .NET + Xamarin + MAUI SW renderer No Community Yes .NET only MIT (free)
ScottPlot .NET (all) GDI+ No Community Partial .NET only MIT (free)
LiveCharts2 .NET + MAUI SW No Partial commercial Yes .NET only MIT / commercial
Telerik RadChartView WPF/WinForms Direct2D (limited) No Yes No No Suite license
LightningChart JS Web/Blazor GPU Full 3D Yes N/A .NET + Python Free NC; commercial

4. The Alternatives In Depth

1. LightningChart .NET (Recommended)

Platform: WinForms, WPF, UWP  | Rendering: GPU  | 3D: Full native suite  | Support: Commercial SLA

LightningChart .NET addresses OxyPlot’s three core limitations directly. GPU rendering eliminates the software renderer ceiling tens of millions of data points at sub-100ms load times and 60 FPS real-time streaming sustained indefinitely, in WinForms and WPF applications where OxyPlot’s software renderer slows to seconds. A full 3D chart suite surface grids for function and terrain visualization, 3D scatter for multivariate data, 3D heatmaps for spectral analysis, 3D spectrograms that OxyPlot cannot provide in any form. And commercial support contracts with defined SLAs for production-critical applications.

The cross-language family extends what OxyPlot’s .NET-only nature cannot: LightningChart Python for Jupyter notebooks and PyQt/PySide GUI applications, and LightningChart JS for web applications the same GPU rendering engine and chart type catalog across all three environments. The free non-commercial license on LightningChart JS provides full evaluation access for the web layer.

Choose LightningChart .NET when: GPU performance at millions of data points is required, 3D charts are needed, commercial support SLA is a procurement requirement, or cross-language visualization consistency across .NET desktop, Python, and JavaScript is part of the architecture.

2. ScottPlot

Platform: .NET WinForms, WPF, Blazor, Avalonia, Console  | License: MIT always free  | Rendering: GDI+ rasterized

ScottPlot is OxyPlot’s most direct free alternative when the trigger is performance. Where OxyPlot’s software renderer computes chart elements in a platform-abstracted way, ScottPlot’s GDI+ rasterized renderer draws the entire chart as a pixel bitmap simpler and faster for data-intensive charts on Windows-target applications. At the data volumes where OxyPlot starts to slow, ScottPlot typically handles them more gracefully. The trade-off: ScottPlot doesn’t have OxyPlot’s Xamarin or MAUI support for mobile targets. If the application is Windows desktop only, ScottPlot usually outperforms OxyPlot. If it also needs iOS or Android, OxyPlot’s platform coverage is the advantage.

Choose ScottPlot when: better large-data performance than OxyPlot is needed at zero cost, the application targets Windows desktop only (no Xamarin/MAUI mobile), and GPU acceleration is not required.

3. LiveCharts2

Platform: .NET WPF, WinForms, Blazor, Avalonia, MAUI  | License: MIT community; paid for some features  | Notable: Modern MVVM API, animations, MAUI support

LiveCharts2 occupies a similar cross-platform position to OxyPlot (both support MAUI) with a more modern API design and better default visual quality. The fluent API and MVVM data binding model feel more like current .NET development conventions than OxyPlot’s older API style. Smooth animations are a LiveCharts2 strength chart transitions are more polished than OxyPlot’s defaults. Performance at large data volumes is similar to OxyPlot both are software-rendered and neither is optimized for extreme data volumes. LiveCharts2 is the better choice when visual quality and API modernity matter more than raw data throughput.

Choose LiveCharts2 when: a modern MVVM API, better default visual quality, and MAUI cross-platform support are the priorities and data volumes stay within the software renderer range.

4. Microcharts

Platform: .NET Xamarin, MAUI, WPF, Blazor  | License: MIT always free  | Notable: Minimal, mobile-first

If OxyPlot was chosen primarily for its Xamarin or MAUI mobile support and the requirement is lightweight charts in a mobile application, Microcharts is worth evaluating. It is minimal by design a small set of simple chart types (bar, line, point, radar, donut, gauge) rendered with SkiaSharp for high-quality mobile rendering. Not a replacement for OxyPlot’s scientific chart breadth, but the right tool when mobile app charts need to be small, fast to load, and visually clean without the overhead of a full scientific charting library.

Choose Microcharts when: simple lightweight charts in a Xamarin or MAUI mobile app are the requirement not scientific visualization breadth.

5. Telerik RadChartView

Platform: WPF, WinForms  | License: Telerik suite license

Telerik provides commercial support and ecosystem integration that OxyPlot doesn’t. If the reason for evaluating OxyPlot alternatives is commercial support requirements rather than performance, Telerik covers that gap. The trade-off on performance is actually negative: Telerik’s own forums document that 90,000 data points is “too much” for RadChartView a ceiling lower than what OxyPlot handles. Consider Telerik when ecosystem integration and commercial support are the priorities and data volumes are modest.

Consider Telerik when: commercial support and Telerik ecosystem integration are required and chart performance is not the primary concern.

6 LightningChart Python

Platform: Python – Jupyter, PyQt, PySide  | License: Free non-commercial; commercial

If the OxyPlot limitation is needing GPU-performance visualization in the Python data science layer of the same application stack, LightningChart Python provides it. Native GPU-accelerated charting in Jupyter notebooks and PyQt/PySide applications, accepting numpy arrays directly, with the same 100+ chart types and 3D suite as LightningChart .NET. No OxyPlot equivalent exists for Python this is the gap OxyPlot’s .NET-only nature leaves open for multi-language teams.

Choose LightningChart Python when: the gap is in the Python visualization layer OxyPlot covers .NET but leaves Python without a high-performance, consistent equivalent.

7. LightningChart JS

Platform: Web / JavaScript / Blazor  | License: Free non-commercial; commercial

For teams whose OxyPlot application also needs a web dashboard or Blazor application with matching chart performance and types, LightningChart JS provides GPU-accelerated WebGL charting for web the same rendering engine as LightningChart .NET. No OxyPlot equivalent exists for the web layer. The free non-commercial license covers full evaluation.

Choose LightningChart JS when: the web or Blazor layer needs chart performance and types equivalent to the .NET desktop, and OxyPlot’s .NET-only coverage is the gap.

5. Performance Benchmarks

.NET desktop chart performance comparison

Library Rendering 100K pts load 1M pts load 10M pts load Real-time streaming
LightningChart .NET GPU Sub-50ms Sub-200ms Sub-500ms 60 FPS sustained
ScottPlot GDI+ rasterized ~100–300ms ~1–3s ~10–20s+ ~30 FPS, degrades over time
OxyPlot Software renderer ~200–500ms ~3–5s Impractical Significant lag above 5K pts/sec
LiveCharts2 Software (SkiaSharp) ~150–400ms ~2–5s Impractical Moderate at low update rates
Telerik RadChartView Direct2D (partial) Slow (forum-documented) Confirmed failure No UI freeze reported
Benchmark note: Software renderer numbers (OxyPlot, LiveCharts2) are approximate and hardware-dependent. The structural relationship holds across hardware: GPU rendering (LightningChart .NET) outperforms GDI+ (ScottPlot), which outperforms platform-abstracted software renderers (OxyPlot, LiveCharts2), which all outperform SVG-based approaches (Telerik, DevExpress) for large datasets.

Capability gap from OxyPlot to alternatives

Capability OxyPlot ScottPlot LiveCharts2 LightningChart .NET
GPU rendering No No No Yes
3D surface/scatter/heatmap No No No Yes
Xamarin / MAUI mobile Yes Partial Yes Check current
Commercial support SLA No No Partial Yes
JavaScript equivalent No No No LC JS
Python equivalent No No No LC Python
License cost Free (MIT) Free (MIT) Free / commercial Commercial

6. The Cross-Language Dimension

OxyPlot’s .NET-only architecture is a practical limitation for teams that work across environments. The typical situation: a WPF desktop application charts data from a hardware sensor, a Python notebook analyses that data and visualizes results, and a React web dashboard displays live data for remote monitoring. OxyPlot covers the WPF layer only.

LightningChart as a consistent cross-language visualization stack

  • .NET Desktop (WPF, WinForms, UWP): LightningChart .NET GPU rendering, 100+ chart types, full 3D suite. Commercial support.
  • Python (Jupyter, PyQt5/6, PySide2/6): LightningChart Python same GPU engine, accepts numpy arrays natively. No browser layer.
  • Web/Blazor (React, Vue, Angular, Vanilla JS): LightningChart JS WebGL rendering, same chart catalog. Free non-commercial license.

All three share the same rendering engine, chart type catalog, and API design concepts. Developers moving between layers work with a consistent model. OxyPlot addresses only the .NET layer.

7. Migration Guide: OxyPlot to LightningChart .NET

OxyPlot (WPF) line series:

// OxyPlot PlotModel with seriesvar plotModel = new PlotModel { Title = "Sensor Data" };var series = new LineSeries{    Title = "Channel A",    MarkerType = MarkerType.None,    StrokeThickness = 1};foreach (var point in dataPoints)    series.Points.Add(new DataPoint(point.X, point.Y));plotModel.Series.Add(series);plotView1.Model = plotModel; // OxyPlot WPF PlotView control

LightningChart .NET equivalent (WPF) — GPU rendering, no ceiling at large volumes:

// Add LightningChartUltimate control to WPF XAML, then code-behind:using Arction.Wpf.Charting;using Arction.Wpf.Charting.SeriesXY;lightningChart1.BeginUpdate();lightningChart1.Title.Text = "Sensor Data";var series = new PointLineSeries(    lightningChart1.ViewXY,    lightningChart1.ViewXY.XAxes[0],    lightningChart1.ViewXY.YAxes[0]){    Title = { Text = "Channel A" },    LineStyle = { Width = 1f }};// Convert OxyPlot DataPoints to LightningChart SeriesPointsseries.Points = dataPoints    .Select(p => new SeriesPoint { X = p.X, Y = p.Y })    .ToArray();lightningChart1.ViewXY.PointLineSeries.Add(series);lightningChart1.EndUpdate(); // Handles millions of points where OxyPlot slows to seconds

Key migration considerations:

  • PlotModel vs ViewXY: OxyPlot separates the data model (PlotModel) from the view (PlotView). LightningChart .NET combines both in the chart control configure directly via lightningChart1.ViewXY.
  • Data points: OxyPlot uses DataPoint(x, y). LightningChart .NET uses SeriesPoint { X, Y } as a struct array. For uniform time series, SampleDataSeries with a sample rate is more efficient than per-point structs.
  • Axes: OxyPlot axes are created on the PlotModel and referenced by series. LightningChart .NET axes are created on the ViewXY and referenced by series constructor. The conceptual model is similar.
  • 3D charts: OxyPlot has no 3D series equivalents SurfaceSeries3D, PointSeries3D, and IntensityGridSeries3D in LightningChart .NET are new capabilities with no OxyPlot migration path.

8. Decision Tree

  1. Do you need 3D chart types surface charts, 3D scatter, 3D heatmaps?
    Yes: LightningChart .NET. OxyPlot has no 3D capability and no upgrade path within the library.
    No: Continue.
  2. Are you hitting OxyPlot’s software renderer ceiling multi-second loads at large data volumes or real-time streaming degradation?
    Yes: LightningChart .NET (GPU, commercial) or ScottPlot (GDI+ rasterized, free better than OxyPlot for Windows desktop at scale).
    No: Continue.
  3. Is a commercial support SLA required for procurement?
    Yes: LightningChart .NET. OxyPlot is community-only.
    No: Continue.
  4. Does the application need Xamarin or MAUI mobile support?
    Yes: OxyPlot or LiveCharts2 (both support MAUI natively). ScottPlot has partial MAUI support.
    No: ScottPlot for better large-data performance than OxyPlot at zero cost, or LightningChart .NET for GPU performance and 3D.
  5. Does your team need visualization in Python or JavaScript alongside .NET?
    Yes: LightningChart family the only consistent cross-language GPU visualization stack.
    No: ScottPlot or OxyPlot depending on platform coverage requirements.

9. FAQ

What is the best OxyPlot alternative for .NET?

LightningChart .NET when GPU performance, 3D charts, or commercial support are required. ScottPlot (MIT) for better large-data performance at zero cost on Windows desktop. LiveCharts2 for a modern MVVM API with MAUI cross-platform support at similar performance to OxyPlot.

Does OxyPlot support 3D charts?

No. OxyPlot has no 3D chart types. LightningChart .NET provides a full GPU-native 3D suite including surface charts, 3D scatter, 3D heatmaps, and 3D spectrograms.

Is OxyPlot still maintained?

OxyPlot remains available and has a GitHub presence, but the project has experienced historically inconsistent maintenance activity. For production applications requiring predictable long-term support, LightningChart .NET provides commercial support contracts with defined SLAs.

How does OxyPlot compare to ScottPlot?

ScottPlot generally handles larger datasets more efficiently its GDI+ rasterized renderer outperforms OxyPlot’s cross-platform software renderer for Windows desktop applications. OxyPlot’s advantage is broader coverage including Xamarin and MAUI for mobile targets. Both are community-maintained MIT libraries without commercial support.

Is there an OxyPlot alternative for JavaScript or Python?

OxyPlot is .NET-only. LightningChart Python provides GPU-accelerated charting in Jupyter and PyQt/PySide. LightningChart JS provides the web equivalent. Both share the same GPU engine and chart catalog as LightningChart .NET.


Further reading:

Continue learning with LightningChart

Data Visualization Template for Electron JS | LightningChart®

Updated on April 4th, 2025 | Written by humanAre you already building cross-platform applications with Electron JS?  In some of our previous articles, we’ve worked on TypeScript projects where we created pie charts and vibration chart applications. And as we...

Bar chart race JavaScript

Bar chart race JavaScript

Updated on April 14th, 2025 | Written by humanBar chart race JavaScript  When I wrote this article, the COVID-19 pandemic was at its peak point. Today, things are much better thanks to vaccinations that continued their steady positive global effect. With this bar...

A brief look into ‘performance’ in Web Data Visualization

A brief look into ‘performance’ in Web Data Visualization  Introduction  Throughout the existence of humankind, we’ve been trying to present data in various visual forms. Therefore, it is quite accurate to say that the concept of data visualization is...