Project Description
OxyPlot is a cross-platform plotting library for .NET.
Examples
See the Silverlight Example Browser
NuGet packages (updated at every code check-in)
Alpha versions (build yourself from source code)![oxyplot1.png oxyplot1.png]()
Mouse/keyboard input
(LMB = Left mouse button, RMB = Right mouse button)
* You can zoom/pan/reset a single axis by positioning the mouse cursor over the axis before starting the zoom/pan.
How to use it in WPF
How to use it in Silverlight
Examples
Example Browser (Silverlight)
WPF example 1 (binding to a PlotModel)
WPF example 2 (binding to data)
Export to SVG
Requirements
Would you like to contribute?
Donations
This is a free library, but you are welcome to donate a book if you appreciate the work done here. Use the Amazon links below
Links
JFreeChart
MjoGraph
PLplot
Matlab
Mathematica
matplotlib
GnuPlot
RGraph
zedgraph
Google Charts
HighCharts
swt-xy-graph
Dynamic data display
WPF Toolkit charts
Silverlight Toolkit
Visiblox charts
SciChart
LightningChart
Visifire
Mindscape
DevExpress
ChartFX
Infragistics
Telerik
amCharts
Dundas
ChartControl
Syncfusion
TeeChart
Modern UI (Metro) Charts
Writing More Efficient ItemsControls
Books and documents
Practical WPF Charts and Graphics (Jack Xu) google
Practical C# Charts and Graphics (Jack Xu) google
The Visual Display of Quantitative Information (Edward Tufte) googleamazontutorial
Perceptual edge
Show me the numbers (Stephen Few) amazongoogle
Performance comparisons
Charting performance comparison
OxyPlot version of the same test
WPF charting performance comparisons (the battle continues)
Thanks
Thanks to Jetbrains for supporting the project with licenses on Resharper and dotCover. The build system of this library is currently based on the TeamCity continuous integration server.![]()
Thanks to NDepend for supporting with a license on NDepend v4
![NDepend NDepend]()
OxyPlot is a cross-platform plotting library for .NET.
Examples
See the Silverlight Example Browser
NuGet packages (updated at every code check-in)
Alpha versions (build yourself from source code)
- MonoTouch
- Mono for Android
News
- Registered the oxyplot.org domain (July 4, 2013)
- OxyPlot listed as a cool library on Scott Hanselman's presentation on XamarinEvolve (slide 87)!
- Changed the OxyPlot core to a Portable Class Library (PCL). The same assembly can be used on WPF, Windows Forms, Windows Store apps and Silverlight (January 31, 2013)
- Added HeatMapSeries (January 31, 2012)
- Added support for images (January 31, 2012)
- The example browser for Windows 8 is certified in the Windows store (November 12, 2012)
- Changed to MIT license (GPL compatible) (October 20, 2012)
- Added Metro NuGet package (September 6, 2012)
- Build server moved to a virtual machine (Windows 8, VS 2012) (September 6, 2012)
- Metro example applications (August 31, 2012)
- Mono for Android implementation, (May 11, 2012)
- New BoxPlotSeries (April 12, 2012)
- MonoTouch implementation, submitted by dvkwong (March 12, 2012)
- Changed to Mercurial (March 3, 2012)
- The project is built at CodeBetter (Dec 12, 2011)
- Continuous integration with TeamCity. Runs NUnit, dotCover, DuplicatesFinder and has automatic push of Nuget packages (Nov 13, 2011)
- NuGet packages: Wpf / Silverlight (March 9, 2011)
- Example Browser (available for both WPF, Silverlight and WinForms. All sharing the same examples) (March 19, 2011)
Project roadmap
- Close high priority issues
- Improve documentation
- Increase unit test coverage
- Support for MonoMac, Xamarin.Mac, GTK#, create Xamarin component
Features
- Cartesian and polar coordinate systems
- Series
- LineSeries
- TwoColorLineSeries
- ScatterSeries
- AreaSeries
- ContourSeries
- HeatMapSeries
- BoxPlotSeries (submitted by benjaminrupp)
- StemSeries
- StairStepSeries
- HighLowSeries
- CandleStickSeries
- BarSeries
- ColumnSeries
- ErrorColumnSeries
- IntervalBarSeries
- RectangleBarSeries
- TornadoBarSeries
- PieSeries
- Axis types
- Linear
- Logarithmic
- DateTime (under development)
- TimeSpan (under development)
- Category
- Annotations
- Lines
- Arrows
- Rectangles
- Polygons
- Text
- Image
- TileMap
- Controls
- WPF (supports XAML databinding)
- Silverlight
- Windows Forms
- Metro (alpha)
- Output
- Easy to add support for other output devices (just implement simple methods like DrawPolyline, DrawPolygon, DrawEllipse and DrawText)
- Easy to extend with custom Series or Axis types
- High performance (supports large datasets, only draws data that is visible)
- 'Scientific' style (as plots from Mathematica/Matlab)
- Mathematical notation of exponents (superscript and subscript, but this currently only works for horizontal text)
- Spline interpolation
- Pan/zoom (use middle and right mouse button or the mouse wheel, double-click to reset)
- "Tracker" function - showing values when you push down the left mouse button on a curve
- A simple report generator is included (output to pdf, rtf, html5, docx and LaTeX)
Mouse/keyboard input
(LMB = Left mouse button, RMB = Right mouse button)
Action | WPF | Silverlight | Windows Forms | Windows Store App |
---|---|---|---|---|
Pan* | RMB | Alt+LMB | RMB | RMB |
Zoom* | Mouse wheel | Mouse wheel | Mouse wheel | Mouse wheel |
Zoom by rectangle | Ctrl+RMB | Ctrl+Alt+LMB | Ctrl+RMB | Ctrl+RMB |
Reset* | RMB double-click | Alt+LMB double-click | RMB double-click | RMB double-click |
Show 'tracker' | LMB | LMB | LMB | LMB |
Reset axes | 'A' | 'A' | 'A' | 'A' |
Copy bitmap | Ctrl+C | Ctrl+C | ||
Copy code | Ctrl+Alt+C | Ctrl+Alt+C | Ctrl+Alt+C | Ctrl+Alt+C |
Copy properties | Ctrl+Alt+R | Ctrl+Alt+R | Ctrl+Alt+R |
* You can zoom/pan/reset a single axis by positioning the mouse cursor over the axis before starting the zoom/pan.
How to use it in WPF
- Add references to OxyPlot.dll and OxyPlot.wpf.dll in your application (also available from NuGet)
- Create a PlotModel in your ViewModel
- Create a Plot control in XAML and bind the Model property to your PlotModel
How to use it in Silverlight
- Add references to OxyPlot.dll and OxyPlot.Silverlight.dll in your application (also available from NuGet)
- Create a PlotModel in your ViewModel
- Create a Plot control in XAML and bind the Model property to your PlotModel
Examples
Example Browser (Silverlight)
WPF example 1 (binding to a PlotModel)
WPF example 2 (binding to data)
Export to SVG
Requirements
- .NET 4.0 / 4.5
- Silverlight 4 / 5
- MonoTouch
- Mono for Android
- Portable library tools
- Visual Studio 2012, Update 3
Would you like to contribute?
- Improve architecture?
- Improve the code?
- Add examples?
- Find bugs / submit patches?
- Improve documentation/xml comments?
- Write unit tests?
Donations
This is a free library, but you are welcome to donate a book if you appreciate the work done here. Use the Amazon links below
- objo's wish list at amazon.co.uk
- kindle wish list at amazon.com
Links
JFreeChart
MjoGraph
PLplot
Matlab
Mathematica
matplotlib
GnuPlot
RGraph
zedgraph
Google Charts
HighCharts
swt-xy-graph
Dynamic data display
WPF Toolkit charts
Silverlight Toolkit
Visiblox charts
SciChart
LightningChart
Visifire
Mindscape
DevExpress
ChartFX
Infragistics
Telerik
amCharts
Dundas
ChartControl
Syncfusion
TeeChart
Modern UI (Metro) Charts
Writing More Efficient ItemsControls
Books and documents
Practical WPF Charts and Graphics (Jack Xu) google
Practical C# Charts and Graphics (Jack Xu) google
The Visual Display of Quantitative Information (Edward Tufte) googleamazontutorial
Perceptual edge
Show me the numbers (Stephen Few) amazongoogle
Performance comparisons
Charting performance comparison
OxyPlot version of the same test
WPF charting performance comparisons (the battle continues)
Thanks
Thanks to Jetbrains for supporting the project with licenses on Resharper and dotCover. The build system of this library is currently based on the TeamCity continuous integration server.

Thanks to NDepend for supporting with a license on NDepend v4