QCustomPlot is a Qt C++ widget for plotting and data visualization. It has no further dependencies and is fully documented. This plotting library focuses on making good looking, publication quality 2D plots, graphs and charts, as well as offering high performance for realtime visualization applications. Have a look at the Setting Up and the Basic Plotting tutorials to get started.

QCustomPlot can export to various formats such as vectorized PDF files and rasterized images like PNG, JPG and BMP. All outputs look identical and the generated PDF files can be imported and edited by vector editors like Inkscape, without trouble. So QCustomPlot is useful for both displaying of realtime data inside the application as well as producing high quality plots for other media.

The default license is the GPL. If your project requires a commercial license, please contact me via e-mail.

Plot Screenshots

Here are some demo screenshots showing what can be achieved with QCustomPlot in only a few lines of code. The codes of all those plots are available in the full package which can be found in the download section. There, navigate to the project examples/plots/plot-examples.pro.

A simple decaying sine function with fill and its exponential envelope in red
A simple decaying sine function with fill and its exponential envelope in red
sinc function with data points, corresponding error bars and a 2-sigma confidence band.
sinc function with data points, corresponding error bars and a 2-sigma confidence band
A demonstration of several scatter point styles.
A demonstration of several scatter point styles
Altered pens, brushes and scatter styles to fit a darker, stylish theme.
Demonstrating QCustomPlot's versatility in styling the plot
A 2D color map with color scale
A 2D color map with color scale
Pixmap scatter points and a multi-lined axis label, as well as a plot title at the top
Pixmap scatter points and a multi-lined axis label, as well as a plot title at the top
Real time generated data and automatically scaling vertical axis.
Real time generated data and automatically scaling vertical axis
Multiple plot styles with different key/value axes and manual tick labeling at top axis
Multiple plot styles with different key/value axes and manual tick labeling at top axis
Logarithmic axis scaling. Note correct display of the sine function crossing zero in negative infinity
Logarithmic axis scaling. Note correct display of the sine function crossing zero in negative infinity
A demonstration of several line styles
A demonstration of several line styles
Random walks with fill and date mode for bottom axis labels.
Random walks with fill and date mode for bottom axis labels
Parametric curves with translucent gradient filling
Parametric curves with translucent gradient filling
Three stacked bar charts with manual x axis tick labels
Three stacked bar charts with manual x axis tick labels
Statistical 5-parameter-box-plot with outliers
Statistical 5-parameter-box-plot with outliers
The interaction example showing the selection mechanism for graphs
The interaction example showing the selection mechanism for graphs
Using items like text labels, arrows and a bracket. This is actually animated, see examples project
Using items like text labels, arrows and a bracket. This is actually animated, see examples project
QCP supports multiple axes on one axis rect side and multiple axis rects per plot widget
QCP supports multiple axes on one axis rect side and multiple axis rects per plot widget
QCP showing financial and stock data with the typical Candlestick and OHLC charts
QCP showing financial and stock data with the typical Candlestick and OHLC charts