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

LGPL-2.1 License

Stars
852
Committers
17

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

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 --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})

See https://jkriege2.github.io/JKQtPlotter/page_buildinstructions__c_m_a_k_e.html for details.

Usage via CMake's FetchConten-API

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's FetchContent-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/6
FetchContent_Declare(JKQTPlotter${QT_VERSION_MAJOR}
                     GIT_REPOSITORY https://github.com/jkriege2/JKQtPlotter.git
                     # GIT_TAG        v5.0.0)
# ... finally make JKQTPlotter5/6 available
FetchContent_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})

Stargazers over time