- Notifications
You must be signed in to change notification settings - Fork203
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
License
jkriege2/JKQtPlotter
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
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 theQt framework.
This software is licensed under the term of theGNU Lesser General Public License 2.1(LGPL 2.1) or above.
- 2D Plotter widget classJKQTPlotter:
- high-quality plotting
- no other dependencies than Qt >= 5.0 (CImg andOpenCV 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 datastoreJKQTPDatastore:
- 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 ofgraphs that can be added to a plot, e.g.:
- scatter plot andparametrized scatter plots (e.g. bubble charts)
- line graphs,step graphs,impulses
- filled curves
- barcharts (also stacked)
- extensive support for differentstyles of error indicators
- integrated mathematical function parser forparsed function plots (with intelligent rendering algorithm)
- line/scatter graphs can also bebased on C/C++ functions instead of data series (C++11 support!)
- statistical plots) (e.g. boxplots, violinplots, ...)
- large variety ofimage 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 fromJKQTPPlotElement,JKQTPPlotAnnotationElement,JKQTPGeometricPlotElement,JKQTPGraph
- optional:OpenCV interface,CImg interfaces
- CMake-based build system
- extensive set ofExamples/Tutorials
- extensive doxygen-generatedDocumentation
A Documentation (auto-)generated withdoxygen from the trunk source code can be found here:http://jkriege2.github.io/JKQTPlotter/index.html
There are also some subpage of general intetest:
There is alarge 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: TheScreenshots-folder contains several screenshots, partly taken from the provided examples, but also from other software using this libarary (e.g.QuickFit 3.0)
JKQTPlotter contains two different build systems: A modernCMake-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 inhttp://jkriege2.github.io/JKQtPlotter/page_buildinstructions.html.
WithCMake 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 --install . --config "Debug"
This will create CMake targets, which you can easily link against. For the main plotter library, the target's name is \c JKQTPlotter5::JKQTPlotter5 or \c JKQTPlotter6::JKQTPlotter6 depending on the Qt-Version you use. You can then simmply link against this via:
find_package(JKQTPlotter6 REQUIRED) target_link_libraries(${PROJECT_NAME} JKQTPlotter6::JKQTPlotter6)
or on a Qt-version agnostic way via:
find_package(JKQTPlotter${QT_VERSION_MAJOR} REQUIRED) target_link_libraries(${PROJECT_NAME} JKQTPlotter${QT_VERSION_MAJOR}::JKQTPlotter${QT_VERSION_MAJOR})
Seehttps://jkriege2.github.io/JKQtPlotter/page_buildinstructions__c_m_a_k_e.html for details.
In addition to the method described above (i.e. build and install the library and then use it), you can also use JKQTPlotter via CMake'sFetchContent-API.
For this method, you need to add these lines to your CMake project:
include(FetchContent) # once in the project to include the module# ... now declare JKQTPlotter5/6FetchContent_Declare(JKQTPlotter${QT_VERSION_MAJOR} GIT_REPOSITORY https://github.com/jkriege2/JKQtPlotter.git # GIT_TAG v5.0.0)# ... finally make JKQTPlotter5/6 availableFetchContent_MakeAvailable(JKQTPlotter${QT_VERSION_MAJOR})
These declare JKQTPlotter and make it available in your project. Afterwards you should be able to link against it, using
target_link_libraries(${PROJECT_NAME} JKQTPlotter${QT_VERSION_MAJOR}::JKQTPlotter${QT_VERSION_MAJOR})
About
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
Topics
Resources
License
Code of conduct
Security policy
Uh oh!
There was an error while loading.Please reload this page.
Stars
Watchers
Forks
Packages0
Uh oh!
There was an error while loading.Please reload this page.