JKQTPlotter
an extensive Qt4/Qt5 Plotter framework (including a fast variant and a LaTeX equation renderer!), written fully in C/C++ and without external dependencies
Example (JKQTPlotter): Very simple line-graph

This project (see ./examples/simpletest/) simply creates a JKQTPlotter widget (as a new window) and adds a single line-graph (a sine-wave). Data is initialized from two QVector<double> objects. The QMake project looks like this (see jkqtplotter_simpletest.pro:

# source code for this simple demo
SOURCES = jkqtplotter_simpletest.cpp
# configure Qt
CONFIG += qt
QT += core gui xml svg
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets printsupport
# output executable name
TARGET = jkqtplotter_simpletest
# include JKQTPlotter source headers and link against library
DEPENDPATH += ../../lib ../../qmake/staticlib/jkqtplotterlib
INCLUDEPATH += ../../lib
CONFIG (debug, debug|release) {
LIBS += -L../../qmake/staticlib/jkqtplotterlib/debug -ljkqtplotterlib_debug
} else {
LIBS += -L../../qmake/staticlib/jkqtplotterlib/release -ljkqtplotterlib
}

Alternatively to linking agains a libjkqtplotter, you can also directy add the JKQTPlotter sources to the project:

# 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(../../lib/jkqtplotter.pri)

The source code of the main application is (see jkqtplotter_simpletest.cpp:

#include <QApplication>
#include "jkqtplotter/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)
// 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->setXColumn(columnX);
graph1->setYColumn(columnY);
graph1->setTitle(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

JKQTPlotter::getDatastore
JKQTPDatastore * getDatastore()
returns a pointer to the datastore used by this object
Definition: jkqtplotter.h:651
JKQTPlotter::addGraph
size_t addGraph(JKQTPPlotElement *gr)
add a new graph, returns it's position in the graphs list
Definition: jkqtplotter.h:784
JKQTPPlotElement::setTitle
virtual void setTitle(const QString &__value)
sets the title of the plot (for display in key!).
JKQTPXYGraph::setXColumn
void setXColumn(int __value)
the column that contains the x-component of the datapoints
JKQTPXYGraph::setYColumn
void setYColumn(int __value)
the column that contains the y-component of the datapoints
JKQTPlotter::zoomToFit
void zoomToFit(bool zoomX=true, bool zoomY=true, bool includeX0=false, bool includeY0=false, double scaleX=1.05, double scaleY=1.05)
this method zooms the graph so that all plotted datapoints are visible.
Definition: jkqtplotter.h:1025
JKQTPXYLineGraph
This implements xy line plots. This also alows to draw symbols at the data points.
Definition: jkqtpscatter.h:56
JKQTPlotter
plotter widget for scientific plots (uses JKQTBasePlotter to do the actual drawing)
Definition: jkqtplotter.h:432
makefnt.main
def main()
Definition: makefnt.py:53
JKQTPDatastore
This class manages data columns (with entries of type double ), used by JKQTPlotter/JKQTBasePlotter t...
Definition: jkqtpdatastorage.h:280
fontcoverage.i
i
Definition: fontcoverage.py:31
JKQTPDatastore::addCopiedColumn
size_t addCopiedColumn(TIterator first, TIterator last, const QString &name=QString(""))
add one column to the datastore. It will be filled with the values from first ... last
Definition: jkqtpdatastorage.h:806