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
2015-08-02 13:39:26 +02:00
doc w 2015-07-12 14:11:38 +02:00
images git-svn-id: https://www.dkfz.de/svn/B040/LIB/trunk/jkqtpplotter@4020 0d8be23c-4016-4ca5-a69c-3788035ecc6c 2015-07-11 10:56:02 +00:00
screenshots * improved class interface 2015-08-02 13:36:54 +02:00
test * improved class interface 2015-08-02 13:36:54 +02:00
.gitignore * improved class interface 2015-08-02 13:36:54 +02:00
jkqtfastplotter.cpp wip 2015-07-12 16:34:27 +02:00
jkqtfastplotter.h wip 2015-07-12 16:34:27 +02:00
jkqtmathtext.cpp wip 2015-07-12 16:34:27 +02:00
jkqtmathtext.h wip 2015-07-12 16:34:27 +02:00
jkqtmathtext.readme Update jkqtmathtext.readme 2015-07-11 13:04:40 +02:00
jkqtp_imexport.h * improved class interface 2015-08-02 13:36:54 +02:00
jkqtpbaseelements.cpp * improved class interface 2015-08-02 13:36:54 +02:00
jkqtpbaseelements.h wip 2015-07-12 16:34:27 +02:00
jkqtpbaseplotter.cpp * improved class interface 2015-08-02 13:36:54 +02:00
jkqtpbaseplotter.h * improved class interface 2015-08-02 13:36:54 +02:00
jkqtpbaseplotter.qrc git-svn-id: https://www.dkfz.de/svn/B040/LIB/trunk/jkqtpplotter@4020 0d8be23c-4016-4ca5-a69c-3788035ecc6c 2015-07-11 10:56:02 +00:00
jkqtpdatastorage.cpp * improved class interface 2015-08-02 13:36:54 +02:00
jkqtpdatastorage.h * improved class interface 2015-08-02 13:36:54 +02:00
jkqtpelements.cpp * improved class interface 2015-08-02 13:36:54 +02:00
jkqtpelements.h * improved class interface 2015-08-02 13:36:54 +02:00
jkqtpgeoelements.cpp * improved class interface 2015-08-02 13:36:54 +02:00
jkqtpgeoelements.h * improved class interface 2015-08-02 13:36:54 +02:00
jkqtphighrestimer.cpp git-svn-id: https://www.dkfz.de/svn/B040/LIB/trunk/jkqtpplotter@4020 0d8be23c-4016-4ca5-a69c-3788035ecc6c 2015-07-11 10:56:02 +00:00
jkqtphighrestimer.h git-svn-id: https://www.dkfz.de/svn/B040/LIB/trunk/jkqtpplotter@4020 0d8be23c-4016-4ca5-a69c-3788035ecc6c 2015-07-11 10:56:02 +00:00
jkqtpimageelements.cpp * improved class interface 2015-08-02 13:36:54 +02:00
jkqtpimageelements.h * improved class interface 2015-08-02 13:36:54 +02:00
jkqtpimagetools.cpp * improved class interface 2015-08-02 13:36:54 +02:00
jkqtpimagetools.h wip 2015-07-12 16:34:27 +02:00
jkqtplotter.cpp wip 2015-07-12 16:34:27 +02:00
jkqtplotter.dox git-svn-id: https://www.dkfz.de/svn/B040/LIB/trunk/jkqtpplotter@4020 0d8be23c-4016-4ca5-a69c-3788035ecc6c 2015-07-11 10:56:02 +00:00
jkqtplotter.Doxyfile git-svn-id: https://www.dkfz.de/svn/B040/LIB/trunk/jkqtpplotter@4020 0d8be23c-4016-4ca5-a69c-3788035ecc6c 2015-07-11 10:56:02 +00:00
jkqtplotter.h * improved class interface 2015-08-02 13:36:54 +02:00
jkqtplotter.pri * improved class interface 2015-08-02 13:36:54 +02:00
jkqtplotter.readme Update jkqtplotter.readme 2015-07-11 13:05:18 +02:00
jkqtpmathparser.cpp wip 2015-07-12 16:34:27 +02:00
jkqtpmathparser.h wip 2015-07-12 16:34:27 +02:00
jkqtpoverlayelements.cpp * improved class interface 2015-08-02 13:36:54 +02:00
jkqtpoverlayelements.h wip 2015-07-12 16:34:27 +02:00
jkqtpparsedfunctionelements.cpp * improved class interface 2015-08-02 13:36:54 +02:00
jkqtpparsedfunctionelements.h * improved class interface 2015-08-02 13:36:54 +02:00
jkqtptools.cpp wip 2015-07-12 16:34:27 +02:00
jkqtptools.h wip 2015-07-12 16:34:27 +02:00
jkqttools.cpp git-svn-id: https://www.dkfz.de/svn/B040/LIB/trunk/jkqtpplotter@4020 0d8be23c-4016-4ca5-a69c-3788035ecc6c 2015-07-11 10:56:02 +00:00
jkqttools.h * improved class interface 2015-08-02 13:36:54 +02:00
LICENSE Initial commit 2015-07-11 12:55:50 +02:00
README.md improved documentation 2015-08-02 13:39:26 +02:00

JKQtPlotter

This is an extensive library of function/data plotter classes for Qt (>= 4.7, tested with Qt up to 5.4).

This software is licensed under the term of the GNU Lesser General Public License 2.1 (LGPL 2.1) or above.

Examples

This section assembles some simple examples of usage. You can find more (complex) examples for the classes in this repository in the subfolder "test". All test-projects are Qt-projects that use qmake to build. You can load them into QtCreator easily.

###Very simple line-graph This project (see ./test/jkqtplotter_simpletest/) simply creates a JKQtPlotter widget (as a new window) and adds a single line-graph (a sine-wave). The QMake project looks like this (see ./test/jkqtplotter_simpletest/jkqtplotter_simpletest.pro):

# source code for this simple demo
SOURCES = jkqtplotter_simpletest.cpp 

# configure Qt
CONFIG += qt
QT += core gui svg
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets printsupport

# output executable name
TARGET = jkqtplotter_simpletest

# include JKQtPlotter source code
include(../../jkqtplotter.pri)

And the soruce code of the main application is (see ./test/jkqtplotter_simpletest/jkqtplotter_simpletest.cpp):

#include <QApplication>
#include "jkqtplotter.h"


int main(int argc, char* argv[])
{
    QApplication app(argc, argv);

    // 1. create a plotter window and get a pointer to the internal datastore 
	//    (for convenience)
    JKQtPlotter plot;
    JKQTPdatastore* ds=plot.getDatastore();

    // 2. now we create data for a simple plot (a sine curve)
    QVector<double> X, Y;
    const int Ndata=100;
    for (int i=0; i<Ndata; i++) {
        const double x=double(i)/double(Ndata)*8.0*M_PI;
        X<<x;
        Y<<sin(x);
    }

    // 3. make data available to JKQtPlotter by adding it to the internal 
	//    datastore.
    //    Note: In this step the data is copied (of not specified otherwise), so
    //          you can reuse X and Y afterwards!
    //    The variables columnX and columnY will contain the internal column ID 
    //    of the newlycreated columns with names "x" and "y" and the (copied) 
	//    data from X and Y.
    size_t columnX=ds->addCopiedColumn(X, "x");
    size_t columnY=ds->addCopiedColumn(Y, "y");

    // 4. create a graph in the plot, which plots the dataset X/Y:
    JKQTPxyLineGraph* graph1=new JKQTPxyLineGraph(&plot);
    graph1->set_xColumn(columnX);
    graph1->set_yColumn(columnY);
    graph1->set_title(QObject::tr("sine graph"));

    // 5. add the graph to the plot, so it is actually displayed
    plot.addGraph(graph1);

    // 6. autoscale the plot so the graph is contained
    plot.zoomToFit();

    // show plotter and make it a decent size
    plot.show();
    plot.resize(600,400);

    return app.exec();
}

The result looks like this: jkqtplotter_simpletest1

##Screenshots ###Scatter Plots and Boxplots Scatterplots

###Different Types of Barcharts Barcharts

###Image Plots You can plot C-arrays as images in different color-coding styles. Diferent Overlays/masks are also available. Finally you can use LaTeX markup to format any axis/plot/tick/... label. there is an internal LaTeX parser in this package. Scatterplots

###Plotting a user-defined (parsed) function Yes, a complete math expression parser is contained! Function Plot

###Axis-Label styles in LogLog-Plot LogLog Plot

###Parametrized Scatter Plots and Data Viewer Scatter Plots can have symbols where the shape/color/size is parametrized by a data column. Also the plotter is built around an internal datastore, which you can access (readonly!!!) by a data-viewer that is accessible from the contextmenu in any plot. LogLog Plot

#JKQTmathText JKQTmathText is a hand-written LaTeX-renderer for Qt (implemented in native C++, using Qt). It supports a large set of standard LaTeX markup and can render it to a QPainter. LatexRender LatexRender LatexRender LatexRender LatexRender