/** \example stepplots.cpp * JKQTPlotter: Examples: Special/Step Line Plots in Different Styles * * \ref JKQTPlotterSpecialStepLinePlot */ #include "jkqtpexampleapplication.h" #include #include "jkqtplotter/jkqtplotter.h" #include "jkqtplotter/graphs/jkqtpscatter.h" #include "jkqtplotter/graphs/jkqtpspecialline.h" #include "jkqtplotter/jkqtptools.h" int main(int argc, char* argv[]) { JKQTPAppSettingController highDPIController(argc, argv); JKQTPExampleApplication 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 a vector of x-values for a simple plot and several sets of y-values for // cosine curves stacked above each other QVector X, Y1, Y2, Y3, Y4, Y5; const int Ndata=7; // number of plot points in each curve for (int i=0; i<=Ndata; i++) { const double x=0.0+double(i)*0.6*JKQTPSTATISTICS_PI; X<addCopiedColumn(X, "x"); size_t columnY1=ds->addCopiedColumn(Y1, "y1"); size_t columnY2=ds->addCopiedColumn(Y2, "y2"); size_t columnY3=ds->addCopiedColumn(Y3, "y3"); size_t columnY4=ds->addCopiedColumn(Y4, "y5"); size_t columnY5=ds->addCopiedColumn(Y5, "y4"); // 3 now we make several plots with different step styles, each one also contains a // symbol plot indicating the location of the datapoints themselves JKQTPSpecialLineHorizontalGraph* graph; //-- JKQTPStepLeft ---------------------------------------------------------------------------------------- graph=new JKQTPSpecialLineHorizontalGraph(&plot); // set data for the graph graph->setXColumn(columnX); graph->setYColumn(columnY1); // set step style graph->setSpecialLineType(JKQTPStepLeft); graph->setLineWidth(1); graph->setFillCurve(true); /*QRadialGradient radialGrad(QPointF(0.5, 0.5), 0.5); radialGrad.setColorAt(0, Qt::red); radialGrad.setColorAt(0.5, Qt::blue); radialGrad.setColorAt(1, Qt::green); radialGrad.setCoordinateMode(QGradient::ObjectBoundingMode); graph->setFillGradient(radialGrad);*/ graph->setDrawLine(true); graph->setTitle("JKQTPStepLeft, filled"); graph->setBaseline(0.0); // enable symbols graph->setDrawSymbols(true); graph->setSymbolType(JKQTPGraphSymbols::JKQTPCircle); // add the graphs to the plot, so it is actually displayed plot.addGraph(graph); //-- JKQTPStepCenter ---------------------------------------------------------------------------------------- graph=new JKQTPSpecialLineHorizontalGraph(&plot); // set data for the graph graph->setXColumn(columnX); graph->setYColumn(columnY2); // set step style graph->setSpecialLineType(JKQTPStepCenter); graph->setLineWidth(1); graph->setFillCurve(false); graph->setDrawLine(true); graph->setTitle("JKQTPStepCenter"); // enable symbols graph->setDrawSymbols(true); graph->setSymbolType(JKQTPGraphSymbols::JKQTPCircle); // add the graphs to the plot, so it is actually displayed plot.addGraph(graph); //-- JKQTPStepRight ---------------------------------------------------------------------------------------- graph=new JKQTPSpecialLineHorizontalGraph(&plot); // set data for the graph graph->setXColumn(columnX); graph->setYColumn(columnY3); // set step style graph->setSpecialLineType(JKQTPStepRight); graph->setLineWidth(1); graph->setFillCurve(false); graph->setDrawLine(true); graph->setTitle("JKQTPStepRight"); // enable symbols graph->setDrawSymbols(true); graph->setSymbolType(JKQTPGraphSymbols::JKQTPCircle); // add the graphs to the plot, so it is actually displayed plot.addGraph(graph); //-- JKQTPStepAverage ---------------------------------------------------------------------------------------- graph=new JKQTPSpecialLineHorizontalGraph(&plot); // set data for the graph graph->setXColumn(columnX); graph->setYColumn(columnY4); // set step style graph->setSpecialLineType(JKQTPStepAverage); graph->setLineWidth(1); graph->setFillCurve(false); graph->setDrawLine(true); graph->setTitle("JKQTPStepAverage"); // enable symbols graph->setDrawSymbols(true); graph->setSymbolType(JKQTPGraphSymbols::JKQTPCircle); // add the graphs to the plot, so it is actually displayed plot.addGraph(graph); //-- JKQTPDirectLine ---------------------------------------------------------------------------------------- graph=new JKQTPSpecialLineHorizontalGraph(&plot); // set data for the graph graph->setXColumn(columnX); graph->setYColumn(columnY5); // set step style graph->setSpecialLineType(JKQTPDirectLine); graph->setLineWidth(1); graph->setFillCurve(false); graph->setDrawLine(true); graph->setTitle("JKQTPDirectLine"); // enable symbols graph->setDrawSymbols(true); graph->setSymbolType(JKQTPGraphSymbols::JKQTPCircle); // add the graphs to the plot, so it is actually displayed plot.addGraph(graph); // 4. scale plot manually plot.setXY(-0.5, X.last()+0.5, -0.5, 18); // 5. style the plot plot.setGrid(false); plot.getXAxis()->setShowZeroAxis(false); // 6. show plotter and make it a decent size plot.show(); plot.resize(800/plot.devicePixelRatioF(),600/plot.devicePixelRatioF()); return app.exec(); }