update plot imaged for tutorials: datastore, datastorw_groupstat, datastore_regression, datastore_iterators, datastore_statistics
28
.gitignore
vendored
@ -136,3 +136,31 @@ Sicherungskopie_*
|
||||
/screenshots/datastore_map_small.png
|
||||
/screenshots/datastore_sine_small.png
|
||||
/screenshots/datastore_sineimg_small.png
|
||||
/screenshots/datastore_regression_lin_small.png
|
||||
/screenshots/datastore_regression_linrobust_p_small.png
|
||||
/screenshots/datastore_regression_linrobust_small.png
|
||||
/screenshots/datastore_regression_linweight_small.png
|
||||
/screenshots/datastore_regression_nonlinreg_small.png
|
||||
/screenshots/datastore_regression_nonlinregdatastore_regression_polynom.png
|
||||
/screenshots/datastore_regression_nonlinregdatastore_regression_polynom_small.png
|
||||
/screenshots/datastore_regression_polynom_errros_small.png
|
||||
/screenshots/datastore_regression_polynom_small.png
|
||||
/screenshots/datastore_regression_nonlinreg_exp_small.png
|
||||
/screenshots/datastore_regression_nonlinreg_pow_small.png
|
||||
/screenshots/datastore_groupedstat_barchart_small.png
|
||||
/screenshots/datastore_groupedstat_barchartrawdata_small.png
|
||||
/screenshots/datastore_groupedstat_boxplot_small.png
|
||||
/screenshots/datastore_groupedstat_scatter_small.png
|
||||
/screenshots/datastore_groupedstat_scatterrawdata_small.png
|
||||
/screenshots/simpletest_datastore_iterators_cosine_small.png
|
||||
/screenshots/simpletest_datastore_iterators_cosine_ysorted_small.png
|
||||
/screenshots/datastore_iterators_cosine_small.png
|
||||
/screenshots/datastore_iterators_cosine_ysorted_small.png
|
||||
/screenshots/simpletest_datastore_iterators_cosine.png
|
||||
/screenshots/simpletest_datastore_iterators_cosine_ysorted.png
|
||||
/screenshots/datastore_statistics_boxplots_outliers_small.png
|
||||
/screenshots/datastore_statistics_boxplots_simple_small.png
|
||||
/screenshots/datastore_statistics_cumhistkde_small.png
|
||||
/screenshots/datastore_statistics_dataonly_small.png
|
||||
/screenshots/datastore_statistics_hist_small.png
|
||||
/screenshots/datastore_statistics_kde_small.png
|
||||
|
@ -201,6 +201,11 @@ if(JKQtPlotter_BUILD_EXAMPLES)
|
||||
logaxes/logaxes,logaxes_nolog,logaxes_nominorgrid/--iteratefunctorsteps
|
||||
#speed
|
||||
datastore/datastore,datastore_sine,datastore_linkedcarray,datastore_map,datastore_calccolumns,datastore_image,datastore_image_sorted,datastore_sineimg/--iteratefunctorsteps
|
||||
datastore_iterators/datastore_iterators,datastore_iterators_cosine,datastore_iterators_cosine_ysorted,datastore_iterators_cosine_yreplaced,/--iteratefunctorsteps
|
||||
datastore_groupedstat/datastore_groupedstat,datastore_groupedstat_barchartrawdata,datastore_groupedstat_barchart,datastore_groupedstat_boxplot,datastore_groupedstat_scatterrawdata,datastore_groupedstat_scatter/--iteratefunctorsteps
|
||||
datastore_regression/datastore_regression,datastore_regression_lin,datastore_regression_linrobust,datastore_regression_linrobust_p,datastore_regression_linweight,datastore_regression_nonlinreg_exp,datastore_regression_nonlinreg_pow,datastore_regression_polynom,datastore_regression_polynom_errros/--iteratefunctorsteps
|
||||
datastore_statistics/datastore_statistics,datastore_statistics_dataonly,datastore_statistics_boxplots_simple,datastore_statistics_boxplots_outliers,datastore_statistics_hist,datastore_statistics_kde,datastore_statistics_cumhistkde/--iteratefunctorsteps
|
||||
datastore_statistics_2d/datastore_statistics_2d
|
||||
)
|
||||
|
||||
|
||||
|
Before Width: | Height: | Size: 3.7 KiB After Width: | Height: | Size: 3.7 KiB |
Before Width: | Height: | Size: 3.0 KiB After Width: | Height: | Size: 3.2 KiB |
@ -177,9 +177,9 @@ int main(int argc, char* argv[])
|
||||
app.addExportStepFunctor([&]() { setVisible(1); plot.getPlotter()->setShowKey(false); plot.zoomToFit(); plot.redrawPlot(); plot.resize(400,400*4/6); });
|
||||
app.addExportStepFunctor([&]() { setVisible(2); plot.getPlotter()->setShowKey(false); plot.zoomToFit(); plot.redrawPlot(); plot.resize(400,400*4/6); });
|
||||
app.addExportStepFunctor([&]() { setVisible(3); plot.getPlotter()->setShowKey(false); plot.zoomToFit(); plot.redrawPlot(); plot.resize(400,400*4/6); });
|
||||
app.addExportStepFunctor([&]() { setVisibleV({4,5}); plot.getPlotter()->setShowKey(false); plot.zoomToFit(); plot.redrawPlot(); plot.resize(400,400*4/6); });
|
||||
app.addExportStepFunctor([&]() { setVisibleV({4,5}); plot.getPlotter()->setShowKey(false); plot.zoomToFit(); plot.redrawPlot(); plot.resize(600,400*4/6); });
|
||||
app.addExportStepFunctor([&]() { std::sort(datastore->begin(colLinXY.second), datastore->end(colLinXY.second)); setVisibleV({4,5});plot.getPlotter()->setShowKey(false); plot.zoomToFit(); plot.redrawPlot(); });
|
||||
app.addExportStepFunctor([&]() { setVisible(6); plot.zoomToFit(); plot.getPlotter()->setShowKey(false); plot.redrawPlot(); plot.resize(400,400); });
|
||||
app.addExportStepFunctor([&]() { setVisible(6); plot.zoomToFit(); plot.getPlotter()->setShowKey(false); plot.redrawPlot(); plot.resize(300,300); });
|
||||
|
||||
return app.exec();
|
||||
}
|
||||
|
@ -171,6 +171,7 @@ int main(int argc, char* argv[])
|
||||
size_t colScatterRawY=datastore1->addColumn("scatterplot, rawdata, y");
|
||||
std::random_device rd; // random number generators:
|
||||
std::mt19937 gen{rd()};
|
||||
gen.seed(12345);
|
||||
std::normal_distribution<> d1{0,0.5};
|
||||
const size_t N=100;
|
||||
const double xmax=3.5;
|
||||
@ -263,7 +264,13 @@ int main(int argc, char* argv[])
|
||||
|
||||
// show plotter and make it a decent size
|
||||
mainWidget.show();
|
||||
mainWidget.resize(1200,400);
|
||||
mainWidget.resize(900,300);
|
||||
|
||||
app.addExportStepPlotFunctor([&]() { gBar->setVisible(false); plotbarchart->redrawPlot(); return plotbarchart;});
|
||||
app.addExportStepPlotFunctor([&]() { gBar->setVisible(true); plotbarchart->redrawPlot(); return plotbarchart;});
|
||||
app.addExportStepPlotFunctor([&]() { return plotboxplot; });
|
||||
app.addExportStepPlotFunctor([&]() { gScatterErr->setVisible(false); plotscattererrors->redrawPlot(); return plotscattererrors;});
|
||||
app.addExportStepPlotFunctor([&]() { gScatterErr->setVisible(true); plotscattererrors->redrawPlot(); return plotscattererrors;});
|
||||
|
||||
return app.exec();
|
||||
}
|
||||
|
@ -48,7 +48,7 @@ In other tutorials we used e.g. `JKQTPDatastore::set()` to set values in data co
|
||||
```
|
||||
Here we added two columns with 50 entries. `XCol` contains linearly spaced values between 0 and 2*pi and `YCol` contains 50 uninitialized values. Then we iterate an index `i` over all these items (`datastore->getRows(XCol)` returns the rows in a column, i.e. 50 in the example above) and used `JKQTPDatastore::set()` to store the calculated values in the two columns. The current x-values is read from `XCol` using `JKQTPDatastore::get()`. The resulting plot looks like this:
|
||||
|
||||
![simpletest_datastore_iterators_cosine](https://raw.githubusercontent.com/jkriege2/JKQtPlotter/master/screenshots/datastore_iterators_cosine.png)
|
||||
![datastore_iterators_cosine](https://raw.githubusercontent.com/jkriege2/JKQtPlotter/master/screenshots/datastore_iterators_cosine.png)
|
||||
|
||||
The same loop can be written using iterators:
|
||||
```.cpp
|
||||
@ -90,14 +90,14 @@ Of course you can now also interface other algorithms, like e.g. [`std::sort()`]
|
||||
|
||||
With this line of code, the `YCol` is sorted in ascending order and the plot becomes:
|
||||
|
||||
![simpletest_datastore_iterators_cosine_ysorted](https://raw.githubusercontent.com/jkriege2/JKQtPlotter/master/screenshots/datastore_iterators_cosine_ysorted.png)
|
||||
![datastore_iterators_cosine_ysorted](https://raw.githubusercontent.com/jkriege2/JKQtPlotter/master/screenshots/datastore_iterators_cosine_ysorted.png)
|
||||
|
||||
Another example would be to replace all value `y<-0.5` with the value `1.0` using [`std::replace_if()`](https://de.cppreference.com/w/cpp/algorithm/replace):
|
||||
```.cpp
|
||||
std::replace_if(datastore->begin(YCol), datastore->end(YCol), [](double v) { return v<-0.5; }, 1.0);
|
||||
```
|
||||
|
||||
![simpletest_datastore_iterators_cosine_yreplaced](https://raw.githubusercontent.com/jkriege2/JKQtPlotter/master/screenshots/datastore_iterators_cosine_yreplaced.png)
|
||||
![datastore_iterators_cosine_yreplaced](https://raw.githubusercontent.com/jkriege2/JKQtPlotter/master/screenshots/datastore_iterators_cosine_yreplaced.png)
|
||||
|
||||
Finally also the [erase-remove idiom](https://en.wikipedia.org/wiki/Erase%E2%80%93remove_idiom) (e.g. known from `std::vector`) is supported:
|
||||
```.cpp
|
||||
@ -111,4 +111,4 @@ Note that the iterator classes of `JKQTPDatastore` (namely `JKQTPColumnIterator`
|
||||
- `JKQTPColumnIterator::getPosition()` returns the row/position inside the column the iterator points to
|
||||
- `JKQTPColumnIterator::getImagePosition()` / `JKQTPColumnIterator::getImagePositionX()` / `JKQTPColumnIterator::getImagePositionY()` return the x-/y-location of the pointed-to pixel in an image column
|
||||
- `JKQTPColumnIterator::getImageColumns()` / `JKQTPColumnIterator::getImageRows()` return the width/height of the image represented by the image column (the pointed-to pixel is part of)
|
||||
|
||||
|
||||
|
@ -52,7 +52,9 @@ int main(int argc, char* argv[])
|
||||
// 2.3 combining with addLinearColumn() you can also use C++ STL algorithms:
|
||||
//size_t XCol=datastore->addLinearColumn(50, 0, 4.0*JKQTPSTATISTICS_PI, "cos curve: x-data");
|
||||
//size_t YCol=datastore->addColumn("cos curve: y-data");
|
||||
size_t YCol2=datastore->addColumn("cos curve: y-data");
|
||||
//std::transform(datastore->begin(XCol), datastore->end(XCol), datastore->backInserter(YCol), cos);
|
||||
std::transform(datastore->begin(XCol), datastore->end(XCol), datastore->backInserter(YCol2), cos);
|
||||
// 2.4. Just for fun we can now sort the data:
|
||||
//std::sort(datastore->begin(YCol), datastore->end(YCol));
|
||||
// or replace any value <-0.5 with 1:
|
||||
@ -74,5 +76,10 @@ int main(int argc, char* argv[])
|
||||
plot.show();
|
||||
plot.resize(600,400);
|
||||
|
||||
|
||||
app.addExportStepFunctor([&]() { std::sort(datastore->begin(YCol), datastore->end(YCol)); });
|
||||
app.addExportStepFunctor([&]() {
|
||||
std::replace_if(datastore->begin(YCol2), datastore->end(YCol2), [](double v) { return v<-0.5; }, 1.0); linegraph->setYColumn(YCol2); plot.zoomToFit(); });
|
||||
|
||||
return app.exec();
|
||||
}
|
||||
|
@ -282,7 +282,8 @@ The regression models can be plotted using a `JKQTPXFunctionLineGraph`. the fucn
|
||||
|
||||
The resulting plot looks like this:
|
||||
|
||||
![datastore_regression_nonlinreg](https://raw.githubusercontent.com/jkriege2/JKQtPlotter/master/screenshots/datastore_regression_nonlinreg.png)
|
||||
![datastore_regression_nonlinreg_exp](https://raw.githubusercontent.com/jkriege2/JKQtPlotter/master/screenshots/datastore_regression_nonlinreg_exp.png)
|
||||
![datastore_regression_nonlinreg_pow](https://raw.githubusercontent.com/jkriege2/JKQtPlotter/master/screenshots/datastore_regression_nonlinreg_pow.png)
|
||||
|
||||
Of course also "adaptors" exist that allow to perform the steps above in a single function call:
|
||||
|
||||
|
@ -54,6 +54,7 @@ int main(int argc, char* argv[])
|
||||
// columns and added gaussian noise
|
||||
std::random_device rd; // random number generators:
|
||||
std::mt19937 gen{rd()};
|
||||
gen.seed(12345);
|
||||
std::normal_distribution<> d1{0,1};
|
||||
double a0=-5;
|
||||
double b0=2;
|
||||
@ -96,8 +97,8 @@ int main(int argc, char* argv[])
|
||||
size_t colWLinE=datastore1->addColumn("wlin data, errors");
|
||||
for (double x=-5; x<=10; x++) {
|
||||
double factor=1;
|
||||
if (ddecide(gen)==4) {
|
||||
factor=4;
|
||||
if (ddecide(gen)>=3) {
|
||||
factor=6;
|
||||
}
|
||||
const double err=de(gen)*factor;
|
||||
datastore1->appendToColumn(colWLinX, x);
|
||||
@ -192,12 +193,15 @@ int main(int argc, char* argv[])
|
||||
p=1.5;
|
||||
g=jkqtpstatAddRobustIRLSLinearRegression(graphD, nullptr, nullptr, false, false, p);
|
||||
g->setTitle(g->getTitle()+", $p="+jkqtp_floattolatexqstr(p)+"$");
|
||||
auto gp1=g;
|
||||
p=1.7;
|
||||
g=jkqtpstatAddRobustIRLSLinearRegression(graphD, nullptr, nullptr, false, false, p);
|
||||
g->setTitle(g->getTitle()+", $p="+jkqtp_floattolatexqstr(p)+"$");
|
||||
auto gp2=g;
|
||||
p=2;
|
||||
g=jkqtpstatAddRobustIRLSLinearRegression(graphD, nullptr, nullptr, false, false, p);
|
||||
g->setTitle(g->getTitle()+", $p="+jkqtp_floattolatexqstr(p)+"$");
|
||||
auto gp3=g;
|
||||
|
||||
|
||||
|
||||
@ -276,16 +280,20 @@ int main(int argc, char* argv[])
|
||||
std::vector<double> pPoly {1,2,-2,0.5};
|
||||
size_t colPolyX=datastore1->addColumn("polynomial data, x");
|
||||
size_t colPolyY=datastore1->addColumn("polynomial data, y");
|
||||
size_t colPolyYNN=datastore1->addColumn("polynomial data, y, no noise");
|
||||
for (double x=-10; x<=10; x++) {
|
||||
datastore1->appendToColumn(colPolyX, x);
|
||||
datastore1->appendToColumn(colPolyY, jkqtp_polyEval(x, pPoly.begin(), pPoly.end())+d1(gen)*50.0);
|
||||
datastore1->appendToColumn(colPolyYNN, jkqtp_polyEval(x, pPoly.begin(), pPoly.end()));
|
||||
}
|
||||
// we visualize this data with a simple scatter graph:
|
||||
QVector<JKQTPGraph*> plotPNoise, plotsPNN;
|
||||
JKQTPXYLineGraph* graphP;
|
||||
plot6->addGraph(graphP=new JKQTPXYLineGraph(plot6));
|
||||
graphP->setXYColumns(colPolyX, colPolyY);
|
||||
graphP->setDrawLine(false);
|
||||
graphP->setTitle(QString("data $%1+\\mathcal{N}(0,50)$").arg(jkqtp_polynomialModel2Latex(pPoly.begin(), pPoly.end())));
|
||||
plotPNoise<<graphP;
|
||||
// 6.2. now we can fit polynomials with different number of coefficients:
|
||||
for (size_t p=0; p<=5; p++) {
|
||||
std::vector<double> pFit;
|
||||
@ -294,6 +302,25 @@ int main(int argc, char* argv[])
|
||||
plot6->addGraph(gPoly=new JKQTPXFunctionLineGraph(plot6));
|
||||
gPoly->setPlotFunctionFunctor(jkqtp_generatePolynomialModel(pFit.begin(), pFit.end()));
|
||||
gPoly->setTitle(QString("regression: $%1$").arg(jkqtp_polynomialModel2Latex(pFit.begin(), pFit.end())));
|
||||
plotPNoise<<gPoly;
|
||||
}
|
||||
JKQTPXYLineGraph* graphPNN;
|
||||
plot6->addGraph(graphPNN=new JKQTPXYLineGraph(plot6));
|
||||
graphPNN->setXYColumns(colPolyX, colPolyYNN);
|
||||
graphPNN->setDrawLine(false);
|
||||
graphPNN->setTitle(QString("data $%1$").arg(jkqtp_polynomialModel2Latex(pPoly.begin(), pPoly.end())));
|
||||
graphPNN->setVisible(false);
|
||||
plotsPNN<<graphPNN;
|
||||
// 6.2. now we can fit polynomials with different number of coefficients:
|
||||
for (size_t p=0; p<=5; p++) {
|
||||
std::vector<double> pFit;
|
||||
JKQTPXFunctionLineGraph* gPoly;
|
||||
jkqtpstatPolyFit(datastore1->begin(colPolyX), datastore1->end(colPolyX), datastore1->begin(colPolyYNN), datastore1->end(colPolyYNN), p, std::back_inserter(pFit));
|
||||
plot6->addGraph(gPoly=new JKQTPXFunctionLineGraph(plot6));
|
||||
gPoly->setPlotFunctionFunctor(jkqtp_generatePolynomialModel(pFit.begin(), pFit.end()));
|
||||
gPoly->setTitle(QString("regression: $%1$").arg(jkqtp_polynomialModel2Latex(pFit.begin(), pFit.end())));
|
||||
gPoly->setVisible(false);
|
||||
plotsPNN<<gPoly;
|
||||
}
|
||||
// 6.3. of course also the "adaptor" shortcuts are available:
|
||||
//for (size_t p=0; p<=5; p++) {
|
||||
@ -338,5 +365,14 @@ int main(int argc, char* argv[])
|
||||
mainWidget.show();
|
||||
mainWidget.resize(1600,800);
|
||||
|
||||
app.addExportStepPlotFunctor([&]() { mainWidget.resize(2000, 900); return plot1; });
|
||||
app.addExportStepPlotFunctor([&]() { gp1->setVisible(false); gp2->setVisible(false); gp3->setVisible(false); plot3->redrawPlot(); return plot3; });
|
||||
app.addExportStepPlotFunctor([&]() { gp1->setVisible(true); gp2->setVisible(true); gp3->setVisible(true); plot3->redrawPlot(); return plot3; });
|
||||
app.addExportStepPlot(plot2);
|
||||
app.addExportStepPlot(plot4);
|
||||
app.addExportStepPlot(plot5);
|
||||
app.addExportStepPlotFunctor([&]() { std::for_each(plotPNoise.begin(), plotPNoise.end(), [](JKQTPGraph* g) {g->setVisible(false);}); std::for_each(plotsPNN.begin(), plotsPNN.end(), [](JKQTPGraph* g) {g->setVisible(true);}); plot6->setX(-12.5,12.5); plot6->redrawPlot(); return plot6; });
|
||||
app.addExportStepPlotFunctor([&]() { std::for_each(plotPNoise.begin(), plotPNoise.end(), [](JKQTPGraph* g) {g->setVisible(true);}); std::for_each(plotsPNN.begin(), plotsPNN.end(), [](JKQTPGraph* g) {g->setVisible(false);}); plot6->setX(-12.5,12.5); plot6->redrawPlot(); return plot6; });
|
||||
|
||||
return app.exec();
|
||||
}
|
||||
|
@ -54,6 +54,7 @@ int main(int argc, char* argv[])
|
||||
size_t randomdatacol3=datastore1->addColumn("random data 3");
|
||||
std::random_device rd; // random number generators:
|
||||
std::mt19937 gen{rd()};
|
||||
gen.seed(12345);
|
||||
std::uniform_int_distribution<> ddecide(0,1);
|
||||
std::normal_distribution<> d1{0,1};
|
||||
std::normal_distribution<> d2{6,1.2};
|
||||
@ -146,26 +147,29 @@ int main(int argc, char* argv[])
|
||||
|
||||
|
||||
// 4.1. We repeat the JKQTPPeakStreamGraph visualization from above:
|
||||
plot1->addGraph(gData1=new JKQTPPeakStreamGraph(plot1));
|
||||
gData1->setDataColumn(randomdatacol1);
|
||||
gData1->setBaseline(-0.1);
|
||||
gData1->setPeakHeight(-0.05);
|
||||
gData1->setDrawBaseline(false);
|
||||
gData1->setTitle("random data $"+d1_latex+"+"+d2_latex+"$");
|
||||
JKQTPPeakStreamGraph* pgData1;
|
||||
plot1->addGraph(pgData1=new JKQTPPeakStreamGraph(plot1));
|
||||
pgData1->setDataColumn(randomdatacol1);
|
||||
pgData1->setBaseline(-0.1);
|
||||
pgData1->setPeakHeight(-0.05);
|
||||
pgData1->setDrawBaseline(false);
|
||||
pgData1->setTitle("random data $"+d1_latex+"+"+d2_latex+"$");
|
||||
|
||||
// 4.2. same as 3.1-3.2, but for the second and thirdcolumn of data:
|
||||
plot1->addGraph(gData2=new JKQTPPeakStreamGraph(plot1));
|
||||
gData2->setDataColumn(randomdatacol2);
|
||||
gData2->setBaseline(-0.1);
|
||||
gData2->setPeakHeight(0.05);
|
||||
gData2->setDrawBaseline(false);
|
||||
gData2->setTitle("random data subset $"+d1_latex+"$");
|
||||
plot1->addGraph(gData3=new JKQTPPeakStreamGraph(plot1));
|
||||
gData3->setDataColumn(randomdatacol3);
|
||||
gData3->setBaseline(-0.15);
|
||||
gData3->setPeakHeight(-0.05);
|
||||
gData3->setDrawBaseline(false);
|
||||
gData3->setTitle("random data subset $"+d2_latex+"$");
|
||||
JKQTPPeakStreamGraph* pgData2;
|
||||
plot1->addGraph(pgData2=new JKQTPPeakStreamGraph(plot1));
|
||||
pgData2->setDataColumn(randomdatacol2);
|
||||
pgData2->setBaseline(-0.1);
|
||||
pgData2->setPeakHeight(0.05);
|
||||
pgData2->setDrawBaseline(false);
|
||||
pgData2->setTitle("random data subset $"+d1_latex+"$");
|
||||
JKQTPPeakStreamGraph* pgData3;
|
||||
plot1->addGraph(pgData3=new JKQTPPeakStreamGraph(plot1));
|
||||
pgData3->setDataColumn(randomdatacol3);
|
||||
pgData3->setBaseline(-0.15);
|
||||
pgData3->setPeakHeight(-0.05);
|
||||
pgData3->setDrawBaseline(false);
|
||||
pgData3->setTitle("random data subset $"+d2_latex+"$");
|
||||
|
||||
// 4.3. for comparison we add plots of the initial distributions:
|
||||
plot1->addGraph(new JKQTPXFunctionLineGraph(std::bind(&jkqtp_gaussdist, std::placeholders::_1, d1.mean(), d1.stddev()), d1_latex, plot1));
|
||||
@ -289,5 +293,12 @@ int main(int argc, char* argv[])
|
||||
mainWidget.show();
|
||||
mainWidget.resize(1200,800);
|
||||
|
||||
app.addExportStepPlotFunctor([&]() { gData1->setVisible(true); gBox1.first->setVisible(false); gBox1.second->setVisible(false); gData2->setVisible(true); gBox2->setVisible(false); gData3->setVisible(true); gBox3->setVisible(false); plot1box->redrawPlot(); return plot1box; });
|
||||
app.addExportStepPlotFunctor([&]() { gData1->setVisible(false); gBox1.first->setVisible(false); gBox1.second->setVisible(false); gData2->setVisible(true); gBox2->setVisible(true); gData3->setVisible(true); gBox3->setVisible(true); plot1box->redrawPlot(); return plot1box; });
|
||||
app.addExportStepPlotFunctor([&]() { gData1->setVisible(true); gBox1.first->setVisible(true); gBox1.second->setVisible(true); gData2->setVisible(false); gBox2->setVisible(false); gData3->setVisible(false); gBox3->setVisible(false); plot1box->redrawPlot(); return plot1box; });
|
||||
app.addExportStepPlotFunctor([&]() { return plot1; });
|
||||
app.addExportStepPlotFunctor([&]() { return plot1kde; });
|
||||
app.addExportStepPlotFunctor([&]() { return plot1cum; });
|
||||
|
||||
return app.exec();
|
||||
}
|
||||
|
@ -102,6 +102,7 @@ int main(int argc, char* argv[])
|
||||
// random number generators:
|
||||
std::random_device rd;
|
||||
std::mt19937 gen{rd()};
|
||||
gen.seed(12345);
|
||||
std::uniform_int_distribution<> ddecide(0,2);
|
||||
std::normal_distribution<> d1x{5,3};
|
||||
std::normal_distribution<> d1y{5,1};
|
||||
|
@ -40,6 +40,7 @@ JKQTPPeakStreamGraph::JKQTPPeakStreamGraph(JKQTBasePlotter *parent):
|
||||
yPeaks=true;
|
||||
peakHeight=1;
|
||||
drawBaseline=true;
|
||||
parentPlotStyle=-1;
|
||||
initLineStyle(parent, parentPlotStyle, JKQTPPlotStyleType::Default);
|
||||
}
|
||||
|
||||
|
Before Width: | Height: | Size: 43 KiB After Width: | Height: | Size: 37 KiB |
Before Width: | Height: | Size: 9.9 KiB After Width: | Height: | Size: 8.9 KiB |
Before Width: | Height: | Size: 5.2 KiB After Width: | Height: | Size: 7.7 KiB |
Before Width: | Height: | Size: 5.3 KiB After Width: | Height: | Size: 5.8 KiB |
Before Width: | Height: | Size: 25 KiB After Width: | Height: | Size: 28 KiB |
Before Width: | Height: | Size: 14 KiB After Width: | Height: | Size: 23 KiB |
Before Width: | Height: | Size: 12 KiB After Width: | Height: | Size: 5.5 KiB |
Before Width: | Height: | Size: 37 KiB After Width: | Height: | Size: 51 KiB |
Before Width: | Height: | Size: 37 KiB After Width: | Height: | Size: 51 KiB |
BIN
screenshots/datastore_iterators.png
Normal file
After Width: | Height: | Size: 38 KiB |
Before Width: | Height: | Size: 29 KiB After Width: | Height: | Size: 38 KiB |
Before Width: | Height: | Size: 20 KiB After Width: | Height: | Size: 39 KiB |
Before Width: | Height: | Size: 13 KiB After Width: | Height: | Size: 7.8 KiB |
Before Width: | Height: | Size: 137 KiB After Width: | Height: | Size: 201 KiB |
Before Width: | Height: | Size: 16 KiB After Width: | Height: | Size: 34 KiB |
Before Width: | Height: | Size: 23 KiB After Width: | Height: | Size: 45 KiB |
Before Width: | Height: | Size: 32 KiB After Width: | Height: | Size: 59 KiB |
Before Width: | Height: | Size: 24 KiB After Width: | Height: | Size: 44 KiB |
Before Width: | Height: | Size: 33 KiB |
BIN
screenshots/datastore_regression_nonlinreg_exp.png
Normal file
After Width: | Height: | Size: 31 KiB |
BIN
screenshots/datastore_regression_nonlinreg_pow.png
Normal file
After Width: | Height: | Size: 35 KiB |
Before Width: | Height: | Size: 33 KiB After Width: | Height: | Size: 51 KiB |
Before Width: | Height: | Size: 36 KiB After Width: | Height: | Size: 57 KiB |
Before Width: | Height: | Size: 16 KiB After Width: | Height: | Size: 11 KiB |
Before Width: | Height: | Size: 8.5 KiB After Width: | Height: | Size: 7.0 KiB |
Before Width: | Height: | Size: 110 KiB After Width: | Height: | Size: 120 KiB |
Before Width: | Height: | Size: 147 KiB After Width: | Height: | Size: 122 KiB |
Before Width: | Height: | Size: 16 KiB After Width: | Height: | Size: 11 KiB |
Before Width: | Height: | Size: 12 KiB After Width: | Height: | Size: 17 KiB |
Before Width: | Height: | Size: 13 KiB After Width: | Height: | Size: 19 KiB |
Before Width: | Height: | Size: 20 KiB After Width: | Height: | Size: 19 KiB |
Before Width: | Height: | Size: 14 KiB After Width: | Height: | Size: 22 KiB |
Before Width: | Height: | Size: 27 KiB After Width: | Height: | Size: 31 KiB |
Before Width: | Height: | Size: 47 KiB After Width: | Height: | Size: 56 KiB |
Before Width: | Height: | Size: 17 KiB After Width: | Height: | Size: 12 KiB |
Before Width: | Height: | Size: 14 KiB After Width: | Height: | Size: 14 KiB |
Before Width: | Height: | Size: 7.8 KiB After Width: | Height: | Size: 7.9 KiB |
Before Width: | Height: | Size: 68 KiB After Width: | Height: | Size: 68 KiB |
Before Width: | Height: | Size: 10 KiB After Width: | Height: | Size: 10 KiB |
Before Width: | Height: | Size: 23 KiB After Width: | Height: | Size: 23 KiB |
Before Width: | Height: | Size: 6.1 KiB After Width: | Height: | Size: 6.1 KiB |
Before Width: | Height: | Size: 35 KiB After Width: | Height: | Size: 35 KiB |
Before Width: | Height: | Size: 7.3 KiB After Width: | Height: | Size: 7.3 KiB |