Project DescriptionOxyPlot is an open source, cross-platform .NET plotting library.
ExamplesSee the
Silverlight Example BrowserNuGet packages (updated at every code check-in)
Note: If you want to use the WPF Designer in Visual Studio, choose the "WPF (not using PCL)" version
Alpha versions (build yourself from source code)
- MonoTouch
- Mono for Android
News
- 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, 2012)
- 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
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
ExamplesExample Browser (Silverlight)
WPF example 1 (binding to a PlotModel)
WPF example 2 (binding to data)
Export to SVGRequirements
- .NET 4.0 / 4.5
- Silverlight 4 / 5
- Portable library tools
- Visual Studio 2010 or 2012
Would you like to contribute?
- Improve architecture?
- Improve the code?
- Add examples?
- Find bugs / submit patches?
- Improve documentation/xml comments?
- Write unit tests?
DonationsThis is a free library, but you are welcome to donate a book if you appreciate the work done here. Use the Amazon links below
LinksJFreeChartMjoGraphPLplotMatlabMathematicamatplotlibGnuPlotRGraphzedgraphGoogle ChartsHighChartsswt-xy-graphDynamic data displayWPF Toolkit chartsSilverlight ToolkitVisiblox chartsSciChartLightningChartVisifireMindscapeDevExpressChartFXInfragisticsTelerikamChartsDundasChartControlSyncfusionWriting More Efficient ItemsControlsBooks and documentsPractical WPF Charts and Graphics (Jack Xu)
googlePractical C# Charts and Graphics (Jack Xu)
googleThe Visual Display of Quantitative Information (Edward Tufte)
google amazon tutorialPerceptual edgeShow me the numbers (Stephen Few)
amazon googlePerformance comparisonsCharting performance comparisonOxyPlot version of the same testThanksThanks to
Jetbrains for a license on DotTrace. The build system of this library is currently based on the
TeamCity continuous integration server. Thanks for providing free licenses for open source projects!

Thanks to
NDepend for supporting with a license on NDepend v4
