JKQtPlotter
an extensive Qt5 & Qt6 Plotter framework (including a feature-richt plotter widget, a speed-optimized, but limited variant and a LaTeX equation renderer!), written fully in C/C++ and without external dependencies
Install / Use
/learn @jkriege2/JKQtPlotterREADME
JKQTPlotter - A Qt Plotting Library
This is an extensive C++ library for data visualization, plotting and charting for Qt (>= 5.0, tested with Qt up to 6.3). It is feature-rich but self-contained and only depends on the Qt framework.
This software is licensed under the term of the GNU Lesser General Public License 2.1 (LGPL 2.1) or above.
Main Features
- 2D Plotter widget class JKQTPlotter:
- high-quality plotting
- no other dependencies than Qt >= 5.0 (CImg and OpenCV are optional dependencies)
- highly customizable axes/grids (linear/log, date/time, custom ticks ...)
- JKQTMathText: integrated LaTeX parser (pure C++, no dependencies) to render mathematical equations in axis labels, ticks, ...
- extensive user-interactions pre-programmed (several zooming modes, selecting regions, custom context menus, switch graph visibility, ...)
- full print and export (PDF,PNG,...) support with preview and parametrization out-the-box
- highly customizable look and feel
- supports the Qt layout system for graphs and allows to symchronize several graphs with each other
- centralized data management in an internal datastore JKQTPDatastore:
- data organized by columns, can also represent image data (ropw-major)
- allows to reuse a column in several graphs
- access via Qt's model view framework
- external or internal datasets
- complete with GUI (table view)
- export capabilities (e.g. to CSV, SYLK, ...)
- C++ standard iterator interface
- statistics library (basic statistics, boxplots, histograms, kernel density estimates, regression analysis, polynomial fitting)
- large variety of graphs that can be added to a plot, e.g.:
- scatter plot and parametrized scatter plots (e.g. bubble charts)
- line graphs, step graphs, impulses
- filled curves
- barcharts (also stacked)
- extensive support for different styles of error indicators
- integrated mathematical function parser for parsed function plots (with intelligent rendering algorithm)
- line/scatter graphs can also be based on C/C++ functions instead of data series (C++11 support!)
- statistical plots) (e.g. boxplots, violinplots, ...)
- large variety of image plots (inclusing different color-scale modes, RGBA-plots, overlays/masks)
- contour plots
- vector field graphs/quiver plots
- financial graphs (candlestick/OHLC)
- geometric forms (lines, rectangles, polygons, circles, bezier-curves, ...) / annotations (labels, text, ranges, ...)
- can be easily extended by deriving a new graph from JKQTPPlotElement, JKQTPPlotAnnotationElement, JKQTPGeometricPlotElement, JKQTPGraph
- optional: OpenCV interface, CImg interfaces
- CMake-based build system
- extensive set of Examples/Tutorials
- extensive doxygen-generated Documentation
Documentation
A Documentation (auto-)generated with doxygen from the trunk source code can be found here: http://jkriege2.github.io/JKQTPlotter/index.html
There are also some subpage of general intetest:
Examples
There is a large set of usage examples (with explanations for each) and tutorials in the folder ./examples/.
All test-projects are Qt-projects that use tcmake to build. Some of them are also available with additional qmake build-files.
In addition: The Screenshots-folder contains several screenshots, partly taken from the provided examples, but also from other software using this libarary (e.g. QuickFit 3.0)
Building Using CMake
JKQTPlotter contains two different build systems: A modern CMake-based build and an older (and deprecated!) QMake-based build (which works out of the box with Qt 5.x and QT 6.x). Both systems are explained in detail in http://jkriege2.github.io/JKQtPlotter/page_buildinstructions.html.
With CMake you can easily build JKQTPlotter and all its examples, by calling something like:
$ mkdir build; cd build
$ cmake .. -G "<cmake_generator>" "-DCMAKE_PREFIX_PATH=<path_to_your_qt_sources>" "-DCMAKE_INSTALL_PREFIX=<where_to_install>"
$ cmake --build . --config "Debug"
$ cmake --inst
Related Skills
node-connect
352.5kDiagnose OpenClaw node connection and pairing failures for Android, iOS, and macOS companion apps
frontend-design
111.3kCreate distinctive, production-grade frontend interfaces with high design quality. Use this skill when the user asks to build web components, pages, or applications. Generates creative, polished code that avoids generic AI aesthetics.
openai-whisper-api
352.5kTranscribe audio via OpenAI Audio Transcriptions API (Whisper).
qqbot-media
352.5kQQBot 富媒体收发能力。使用 <qqmedia> 标签,系统根据文件扩展名自动识别类型(图片/语音/视频/文件)。


