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
Go to file
Jonathan aef6bb67b4 Resolve several issues
1: Allow mouse scroll events to pass through to parent if the plot has not mouse scroll events to do. i.e. if scroll to zoom is disabled, and the graph is part of a scroll area, this allows scrolling the scroll area while the mouse is over the plot.

2: Fixed bug with resize timer resetting itself every time, rather than actually performing the countdown and calling the function.

3. Fixed bug with margins being calculated incorrectly, preventing the complete removal of margins from a plot.
2024-11-21 16:48:12 -08:00
.github/workflows Update msvc-codeanalysis.yml with newer action version 2024-09-18 14:43:28 +02:00
cmake FIX issue #124 warning() is not a valid CMake method (using message(WARNING ...) instead) 2024-03-15 10:15:50 +01:00
doc NEW: added example which shows how to bin a QScrollBar to a JKQTPlotter 2024-09-18 14:37:46 +02:00
examples NEW: added example which shows how to bin a QScrollBar to a JKQTPlotter 2024-09-18 14:37:46 +02:00
lib Resolve several issues 2024-11-21 16:48:12 -08:00
qmake renamed sub-library JKQTCommonMathAndStatistics to JKATMath. This results in shorter filenames 2023-03-15 14:59:34 +01:00
screenshots NEW: added example which shows how to bin a QScrollBar to a JKQTPlotter 2024-09-18 14:37:46 +02:00
tests change to allow compiling against older Qt versions 2024-03-18 11:32:09 +01:00
tools small bugfix 2024-03-18 11:43:55 +01:00
.gitignore NEW: added JKQTPGLabelHalfwaysToXAxis+JKQTPGLabelHalfwaysToYAxis to JKQTPXYGraphLabels 2024-02-22 21:18:45 +01:00
appveyor.yml Update appveyor.yml: Add C++20 build 2024-10-15 21:53:49 +02:00
CMakeLists.txt fix test-declaration in CMake-Files 2024-01-23 11:51:50 +01:00
CODE_OF_CONDUCT.md Create CODE_OF_CONDUCT.md 2019-11-21 21:46:40 +01:00
CONTRIBUTING.md Create CONTRIBUTING.md 2022-04-21 15:08:27 +02:00
Doxyfile doc update 2024-02-10 16:46:33 +01:00
JKQtPlotterAppveyorBuild.pro using Precompiled Headers in QMake 2022-07-23 13:58:01 +02:00
JKQtPlotterBuildAllExamples.pro split jkqtcommon into basic tools and jkqtcommon_statistics_and_math for advanced math tools not used by all libs 2022-07-23 15:31:56 +02:00
JKQtPlotterBuildLibsOnly.pro split jkqtcommon into basic tools and jkqtcommon_statistics_and_math for advanced math tools not used by all libs 2022-07-23 15:31:56 +02:00
LICENSE Initial commit 2015-07-11 12:55:50 +02:00
README.md NEW: JKQTPGeoBezierCurve for drawing bezier curves of degree 1-4 (+example) 2024-02-13 23:49:23 +01:00
readme.txt.in NEW/BREAKING: provide general targets JKQTPlotter5/6::JKQTPlotter5/6, JKQTPlotter5/6::JKQTMathText5/6, ... which are independent of the type of build (shared/static) 2024-01-16 13:07:08 +01:00
SECURITY.md Create SECURITY.md 2022-04-21 14:56:11 +02:00

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.

Lates Release

Language Qt5 Qt6

Documentation

Build status

Commit Activity Last Commit Contributors

Open Issues Closed Issues

Open PRs Closed PRs

CodeQL MSVC-CodeAnalysis

EXAMPLES-Page

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

EXAMPLES-Page

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

Lates Release

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

Stargazers over time