2019-01-20 23:15:10 +08:00
# JKQTPlotter - A Qt Plotting Library
2020-06-28 20:17:28 +08:00
This is an extensive library of function/data plotter classes for Qt (>= 5.0, tested with Qt up to 5.12).
2015-07-11 23:51:59 +08:00
2018-12-29 00:46:47 +08:00
This software is licensed under the term of the [GNU Lesser General Public License 2.1
2019-01-12 20:43:12 +08:00
(LGPL 2.1)](./LICENSE) or above.
2018-11-25 22:02:55 +08:00
2019-11-24 20:36:27 +08:00
[![Lates Release ](https://img.shields.io/github/v/release/jkriege2/JKQtPlotter )](https://github.com/jkriege2/JKQtPlotter/releases)
2019-11-24 19:19:37 +08:00
![Language ](https://img.shields.io/github/languages/top/jkriege2/JKQtPlotter )
2020-08-22 00:32:50 +08:00
[![Qt&5 ](https://img.shields.io/badge/Qt-5-brightgreen )](https://doc.qt.io/qt-5/)
2019-11-24 19:19:37 +08:00
[![Documentation ](https://img.shields.io/badge/documentation-online-blue )](http://jkriege2.github.io/JKQtPlotter/index.html)
[![CI: Windows Build ](https://img.shields.io/appveyor/ci/jkriege2/JKQtPlotter/master?label=CI%20Windows%20Build )](https://ci.appveyor.com/project/jkriege2/jkqtplotter/branch/master)
[![CI: Documentation/Linux/MacOX Build ](https://img.shields.io/travis/jkriege2/JKQtPlotter/master?label=CI%3A%20Documentation%2FLinux%2FMacOX%20Build )](https://travis-ci.org/jkriege2/JKQtPlotter)
2019-11-24 19:57:03 +08:00
[![Commit Activity ](https://img.shields.io/github/commit-activity/m/jkriege2/JKQtPlotter )](https://github.com/jkriege2/JKQtPlotter/pulse)
[![Last Commit ](https://img.shields.io/github/last-commit/jkriege2/JKQtPlotter )](https://github.com/jkriege2/JKQtPlotter/pulse)
[![Contributors ](https://img.shields.io/github/contributors/jkriege2/JKQtPlotter )](https://github.com/jkriege2/JKQtPlotter/graphs/contributors)
2019-11-24 19:19:37 +08:00
[![Open Issues ](https://img.shields.io/github/issues/jkriege2/JKQtPlotter )](https://github.com/jkriege2/JKQtPlotter/issues)
[![Closed Issues ](https://img.shields.io/github/issues-closed/jkriege2/JKQtPlotter )](https://github.com/jkriege2/JKQtPlotter/issues?q=is%3Aissue+is%3Aclosed)
2019-11-24 19:57:03 +08:00
2019-11-24 19:19:37 +08:00
[![Open PRs ](https://img.shields.io/github/issues-pr/jkriege2/JKQtPlotter )](https://github.com/jkriege2/JKQtPlotter/pulls)
[![Closed PRs ](https://img.shields.io/github/issues-pr-closed/jkriege2/JKQtPlotter )](https://github.com/jkriege2/JKQtPlotter/pulls?q=is%3Apr+is%3Aclosed)
2020-08-14 22:26:17 +08:00
[![Code Quality ](https://www.code-inspector.com/project/12216/score/svg ) ![Code Grade ](https://www.code-inspector.com/project/12216/status/svg )](https://frontend.code-inspector.com/public/project/12216/JKQtPlotter/dashboard)
2020-08-14 22:21:32 +08:00
2019-11-24 19:58:52 +08:00
![EXAMPLES-Page ](./screenshots/examplesbanner.png )
2019-01-14 00:18:27 +08:00
## Main Features
2020-06-28 21:57:34 +08:00
- 2D Plotter widget class (JKQTPlotter)
2019-01-14 00:18:27 +08:00
- high-quality plotting
2020-06-28 20:17:28 +08:00
- no other dependencies than Qt >= 5.0
2019-01-14 00:18:27 +08:00
- highly customizable axes/grids (linear/log, date/time, custom ticks ...)
- 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:
- 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, ...)
2019-05-30 04:47:26 +08:00
- C++ standard iterator interface
2019-06-02 00:20:36 +08:00
- statistics library (basic statistics, boxplots, histograms, kernel density estimates, regression analysis, polynomial fitting)
2019-01-14 00:18:27 +08:00
- large variety of graphs that can be added to a plot, e.g.:
- scatter-plots (also parametrized color/size/symbol by a third data-column)
- line graphs, step graphs, impulses
- filled curves
- barcharts (also stacked)
- extensive support for different styles of error indicators
- integrated mathematical function parser for 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)
- extensive library of image plots (inclusing different color-scale modes, RGBA-plots, overlays/masks)
- contour plots
- geometric forms/annotations
2020-09-21 19:15:57 +08:00
- can be easily extended by deriving a new graph from JKQTPPlotElement, JKQTPPlotAnnotationElement, JKQTPGeometricPlotElement, JKQTPGraph
2019-11-16 20:50:43 +08:00
- optional: OpenCV, CImg interfaces
2019-06-21 04:38:51 +08:00
- CMake-based build system
2019-01-14 00:18:27 +08:00
- extensive set of [Examples/Tutorials ](./examples/README.md )
2019-01-21 16:31:13 +08:00
- extensive doxygen-generated [Documentation ](http://jkriege2.github.io/JKQtPlotter/index.html )
2018-12-21 22:31:56 +08:00
2019-01-21 16:30:57 +08:00
## [Documentation](http://jkriege2.github.io/JKQtPlotter/index.html)
2019-01-13 16:35:35 +08:00
A Documentation (auto-)generated with [doxygen ](http://www.doxygen.nl/ ) from the trunk source code can be found here:
2019-01-21 16:30:57 +08:00
**[http://jkriege2.github.io/JKQTPlotter/index.html](http://jkriege2.github.io/JKQtPlotter/index.html)**
2019-01-13 16:35:35 +08:00
2019-01-12 21:15:08 +08:00
## [Examples](./examples/)
There is a [large set of usage examples (with explanations for each) and tutorials ](./examples/ ) in the folder [`./examples/` ](./examples ).
2018-11-27 05:35:21 +08:00
All test-projects are Qt-projects that use qmake to build. You can load them into QtCreator easily.
2019-01-12 21:15:08 +08:00
## [Screenshots](./screenshots/)
The [Screenshots-page ](./screenshots/ ) contains several screenshots, partly taken from the provided examples, but also from other software using this libarary (e.g. [QuickFit 3.0 ](https://github.com/jkriege2/QuickFit3 ))
2019-01-12 21:15:43 +08:00
[![EXAMPLES-Page ](./screenshots/screenshotsbanner.png )](./screenshots/README.md)
2019-01-12 21:15:08 +08:00
2019-01-12 20:43:12 +08:00
## Building
2019-06-22 20:21:32 +08:00
2019-11-24 20:36:27 +08:00
[![Lates Release ](https://img.shields.io/github/v/release/jkriege2/JKQtPlotter )](https://github.com/jkriege2/JKQtPlotter/releases)
2019-11-24 19:19:37 +08:00
JKQTPlotter contains two different build systems: A modern [CMake ](https://cmake.org/ )-based build and an older (and deprecated!) QMake-based build (which works out of the box with Qt 5.x). Both systems are explained in detail in http://jkriege2.github.io/JKQtPlotter/page_buildinstructions.html.
2019-06-22 20:21:32 +08:00
With [CMake ](https://cmake.org/ ) you can easily build JKQTPlotter and all its examples, by calling something like:
2019-06-21 04:44:42 +08:00
```
$ mkdir build; cd build
2019-06-22 20:21:32 +08:00
$ cmake .. -G "< cmake_generator > " "-DCMAKE_PREFIX_PATH=< path_to_your_qt_sources > "
$ cmake --build . --config "Debug"
2019-06-21 04:44:42 +08:00
```