QCustomPlot is a Qt C++ widget for plotting and data visualization. It has no further dependencies and is well 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. QCustomPlot is the solution for displaying of realtime data inside the application as well as producing high quality plots for other media.

Default license GPL, feel free to use QCP in free software! Please get in contact if you need a commercial license.

Plot Screenshots

The screenshots below show what can be achieved with QCustomPlot in only a few lines. To view the code, click on the respective image. All codes are also available in the full package which can be found in the download section. Inside the package, 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



Demonstrating QCustomPlot's versatility in styling the plot Demonstrating QCustomPlot's versatility in styling the plot



A 2D color map with color scale. Color scales can be dragged and zoomed just like axes A 2D color map with color scale. Color scales can be dragged and zoomed just like axes



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 time bottom axis Real time generated data and time bottom axis



Multiple plot styles with different key/value axes and pi tick labeling at top axis Multiple plot styles with different key/value axes and pi 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 smart date ticks on the bottom axis Random walks with fill and smart date ticks on the bottom axis



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 user selection of graphs The interaction example showing the user selection of 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