refactorings, code improvements, no functional changes
Before Width: | Height: | Size: 3.8 KiB After Width: | Height: | Size: 3.7 KiB |
Before Width: | Height: | Size: 3.2 KiB After Width: | Height: | Size: 2.9 KiB |
@ -1384,7 +1384,9 @@ std::string JKQTPMathParser::readDelim(char delimiter){
|
|||||||
} else {
|
} else {
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
} else if ((*program) && (ch!=delimiter)) res=res+ch;
|
} else {
|
||||||
|
res=res+ch;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return res;
|
return res;
|
||||||
|
@ -69,7 +69,7 @@ inline double jkqtpstatAverage(InputIt first, InputIt last, size_t* Noutput=null
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (Noutput) *Noutput=NN;
|
if (Noutput) *Noutput=NN;
|
||||||
if (NN<=0) return JKQTP_DOUBLE_NAN;
|
if (NN==0) return JKQTP_DOUBLE_NAN;
|
||||||
else return sum/static_cast<double>(NN);
|
else return sum/static_cast<double>(NN);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -112,7 +112,7 @@ inline double jkqtpstatWeightedAverage(InputIt first, InputIt last, InputWeightI
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (Noutput) *Noutput=NN;
|
if (Noutput) *Noutput=NN;
|
||||||
if (NN<=0) return JKQTP_DOUBLE_NAN;
|
if (NN==0) return JKQTP_DOUBLE_NAN;
|
||||||
else return sum/sumW;
|
else return sum/sumW;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -191,7 +191,7 @@ inline void jkqtpstatMinMax(InputIt first, InputIt last, double& min, double& ma
|
|||||||
NN++;
|
NN++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (NN<=0) {
|
if (NN==0) {
|
||||||
min=JKQTP_DOUBLE_NAN;
|
min=JKQTP_DOUBLE_NAN;
|
||||||
max=JKQTP_DOUBLE_NAN;
|
max=JKQTP_DOUBLE_NAN;
|
||||||
}
|
}
|
||||||
@ -327,7 +327,7 @@ inline double jkqtpstatModifiedSum(InputIt first, InputIt last, FF modifierFunct
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (Noutput) *Noutput=NN;
|
if (Noutput) *Noutput=NN;
|
||||||
if (NN<=0) return 0;
|
if (NN==0) return 0;
|
||||||
else return sum;
|
else return sum;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -482,7 +482,7 @@ inline double jkqtpstatVariance(InputIt first, InputIt last, double* averageOut=
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (averageOut) {
|
if (averageOut) {
|
||||||
if (NN<=0) *averageOut=JKQTP_DOUBLE_NAN;
|
if (NN==0) *averageOut=JKQTP_DOUBLE_NAN;
|
||||||
else *averageOut=sum/static_cast<double>(NN);
|
else *averageOut=sum/static_cast<double>(NN);
|
||||||
}
|
}
|
||||||
if (Noutput) *Noutput=NN;
|
if (Noutput) *Noutput=NN;
|
||||||
@ -556,7 +556,7 @@ inline double jkqtpstatWeightedVariance(InputIt first, InputIt last, InputWeight
|
|||||||
}
|
}
|
||||||
if (averageOut) *averageOut=avg;
|
if (averageOut) *averageOut=avg;
|
||||||
if (Noutput) *Noutput=NN;
|
if (Noutput) *Noutput=NN;
|
||||||
if (NN<=0) return 0;
|
if (NN==0) return 0;
|
||||||
else return sum2/sumW;
|
else return sum2/sumW;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -626,7 +626,7 @@ inline double jkqtpstatSkewness(InputIt first, InputIt last, double* averageOut=
|
|||||||
}
|
}
|
||||||
if (averageOut) *averageOut=avg;
|
if (averageOut) *averageOut=avg;
|
||||||
if (Noutput) *Noutput=NN;
|
if (Noutput) *Noutput=NN;
|
||||||
if (NN<=0) return 0;
|
if (NN==0) return 0;
|
||||||
const double down=jkqtp_cube(sum2/double(NN));
|
const double down=jkqtp_cube(sum2/double(NN));
|
||||||
return sum3/double(NN)/sqrt(down);
|
return sum3/double(NN)/sqrt(down);
|
||||||
}
|
}
|
||||||
@ -669,7 +669,7 @@ inline double jkqtpstatCentralMoment(InputIt first, InputIt last, int order, dou
|
|||||||
}
|
}
|
||||||
if (averageOut) *averageOut=avg;
|
if (averageOut) *averageOut=avg;
|
||||||
if (Noutput) *Noutput=NN;
|
if (Noutput) *Noutput=NN;
|
||||||
if (NN<=0) return 0;
|
if (NN==0) return 0;
|
||||||
return sum/double(NN);
|
return sum/double(NN);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -708,7 +708,7 @@ inline double jkqtpstatMoment(InputIt first, InputIt last, int order, size_t* No
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (Noutput) *Noutput=NN;
|
if (Noutput) *Noutput=NN;
|
||||||
if (NN<=0) return 0;
|
if (NN==0) return 0;
|
||||||
return sum/double(NN);
|
return sum/double(NN);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -755,14 +755,14 @@ inline double jkqtpstatCorrelationCoefficient(InputIt1 first1, InputIt1 last1, I
|
|||||||
}
|
}
|
||||||
if (Noutput) *Noutput=NN;
|
if (Noutput) *Noutput=NN;
|
||||||
if (averageOut1) {
|
if (averageOut1) {
|
||||||
if (NN<=0) *averageOut1=JKQTP_DOUBLE_NAN;
|
if (NN==0) *averageOut1=JKQTP_DOUBLE_NAN;
|
||||||
else *averageOut1=xbar/static_cast<double>(NN);
|
else *averageOut1=xbar/static_cast<double>(NN);
|
||||||
}
|
}
|
||||||
if (averageOut2) {
|
if (averageOut2) {
|
||||||
if (NN<=0) *averageOut2=JKQTP_DOUBLE_NAN;
|
if (NN==0) *averageOut2=JKQTP_DOUBLE_NAN;
|
||||||
else *averageOut2=ybar/static_cast<double>(NN);
|
else *averageOut2=ybar/static_cast<double>(NN);
|
||||||
}
|
}
|
||||||
if (NN<=0) return JKQTP_DOUBLE_NAN;
|
if (NN==0) return JKQTP_DOUBLE_NAN;
|
||||||
|
|
||||||
xbar=xbar/NN;
|
xbar=xbar/NN;
|
||||||
ybar=ybar/NN;
|
ybar=ybar/NN;
|
||||||
|
@ -2789,7 +2789,7 @@ class JKQTFASTPLOTTER_LIB_EXPORT JKQTFPRGBImageOverlayPlot: public JKQTFPPlot {
|
|||||||
*/
|
*/
|
||||||
JKQTFPRGBImageOverlayPlot(JKQTFastPlotter* parent, void* imageRed, JKQTFPImageFormat imageFormat, int width, int height, double xmin, double xmax, double ymin, double ymax) ;
|
JKQTFPRGBImageOverlayPlot(JKQTFastPlotter* parent, void* imageRed, JKQTFPImageFormat imageFormat, int width, int height, double xmin, double xmax, double ymin, double ymax) ;
|
||||||
JKQTFPRGBImageOverlayPlot(JKQTFastPlotter* parent, void* imageRed, JKQTFPImageFormat imageFormat, int width, int height);
|
JKQTFPRGBImageOverlayPlot(JKQTFastPlotter* parent, void* imageRed, JKQTFPImageFormat imageFormat, int width, int height);
|
||||||
JKQTFPRGBImageOverlayPlot(JKQTFastPlotter* parent);
|
explicit JKQTFPRGBImageOverlayPlot(JKQTFastPlotter* parent);
|
||||||
|
|
||||||
/** \brief draw the graph */
|
/** \brief draw the graph */
|
||||||
virtual void drawGraph(QPainter& painter) override;
|
virtual void drawGraph(QPainter& painter) override;
|
||||||
|
@ -380,78 +380,10 @@ bool JKQTPBarHorizontalErrorGraph::usesColumn(int c) const
|
|||||||
bool JKQTPBarHorizontalErrorGraph::getXMinMax(double &minx, double &maxx, double &smallestGreaterZero)
|
bool JKQTPBarHorizontalErrorGraph::getXMinMax(double &minx, double &maxx, double &smallestGreaterZero)
|
||||||
{
|
{
|
||||||
if (xErrorColumn<0 || xErrorStyle==JKQTPNoError) {
|
if (xErrorColumn<0 || xErrorStyle==JKQTPNoError) {
|
||||||
minx=0;
|
return getMinMaxWithBaseline(xColumn, minx, maxx, smallestGreaterZero);
|
||||||
maxx=0;
|
|
||||||
smallestGreaterZero=0;
|
|
||||||
if (getBaseline()>0) {
|
|
||||||
smallestGreaterZero=getBaseline();
|
|
||||||
minx=getBaseline();
|
|
||||||
maxx=getBaseline();
|
|
||||||
}
|
|
||||||
|
|
||||||
if (parent==nullptr) return false;
|
|
||||||
|
|
||||||
JKQTPDatastore* datastore=parent->getDatastore();
|
|
||||||
int imax=0;
|
|
||||||
int imin=0;
|
|
||||||
if (getIndexRange(imin, imax)) {
|
|
||||||
|
|
||||||
|
|
||||||
for (int i=imin; i<imax; i++) {
|
|
||||||
double yv=getBaseline();
|
|
||||||
if (JKQTPIsOKFloat(yv)) {
|
|
||||||
if (yv>maxx) maxx=yv;
|
|
||||||
if (yv<minx) minx=yv;
|
|
||||||
double xvsgz;
|
|
||||||
xvsgz=yv; SmallestGreaterZeroCompare_xvsgz();
|
|
||||||
}
|
|
||||||
yv=datastore->get(static_cast<size_t>(xColumn),static_cast<size_t>(i));
|
|
||||||
if (JKQTPIsOKFloat(yv)) {
|
|
||||||
if (yv>maxx) maxx=yv;
|
|
||||||
if (yv<minx) minx=yv;
|
|
||||||
double xvsgz;
|
|
||||||
xvsgz=yv; SmallestGreaterZeroCompare_xvsgz();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
} else {
|
} else {
|
||||||
bool start=false;
|
return getMinMaxWithErrorsAndBaseline(xColumn, xErrorColumn, xErrorColumnLower, xErrorSymmetric, minx, maxx, smallestGreaterZero);
|
||||||
minx=getBaseline();
|
|
||||||
maxx=getBaseline();
|
|
||||||
smallestGreaterZero=0;
|
|
||||||
if (getBaseline()>0) {
|
|
||||||
smallestGreaterZero=getBaseline();
|
|
||||||
minx=getBaseline();
|
|
||||||
maxx=getBaseline();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (parent==nullptr) return false;
|
|
||||||
|
|
||||||
const JKQTPDatastore* datastore=parent->getDatastore();
|
|
||||||
int imax=0;
|
|
||||||
int imin=0;
|
|
||||||
if (getIndexRange(imin, imax)) {
|
|
||||||
|
|
||||||
|
|
||||||
for (int i=imin; i<imax; i++) {
|
|
||||||
const double yv=datastore->get(static_cast<size_t>(xColumn),static_cast<size_t>(i))+getXErrorU(i, datastore);
|
|
||||||
const double yvv=datastore->get(static_cast<size_t>(xColumn),static_cast<size_t>(i))-getXErrorL(i, datastore);
|
|
||||||
if (JKQTPIsOKFloat(yv) && JKQTPIsOKFloat(yvv) ) {
|
|
||||||
if (start || yv>maxx) maxx=yv;
|
|
||||||
if (start || yv<minx) minx=yv;
|
|
||||||
double xvsgz;
|
|
||||||
xvsgz=yv; SmallestGreaterZeroCompare_xvsgz();
|
|
||||||
if (start || yvv>maxx) maxx=yvv;
|
|
||||||
if (start || yvv<minx) minx=yvv;
|
|
||||||
xvsgz=yvv; SmallestGreaterZeroCompare_xvsgz();
|
|
||||||
start=false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return !start;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return false;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void JKQTPBarHorizontalErrorGraph::drawErrorsAfter(JKQTPEnhancedPainter &painter)
|
void JKQTPBarHorizontalErrorGraph::drawErrorsAfter(JKQTPEnhancedPainter &painter)
|
||||||
@ -534,78 +466,10 @@ bool JKQTPBarVerticalErrorGraph::usesColumn(int c) const
|
|||||||
bool JKQTPBarVerticalErrorGraph::getYMinMax(double &miny, double &maxy, double &smallestGreaterZero)
|
bool JKQTPBarVerticalErrorGraph::getYMinMax(double &miny, double &maxy, double &smallestGreaterZero)
|
||||||
{
|
{
|
||||||
if (yErrorColumn<0 || yErrorStyle==JKQTPNoError) {
|
if (yErrorColumn<0 || yErrorStyle==JKQTPNoError) {
|
||||||
miny=0;
|
return getMinMaxWithBaseline(yColumn, miny, maxy, smallestGreaterZero);
|
||||||
maxy=0;
|
|
||||||
smallestGreaterZero=0;
|
|
||||||
if (getBaseline()>0) {
|
|
||||||
smallestGreaterZero=getBaseline();
|
|
||||||
miny=getBaseline();
|
|
||||||
maxy=getBaseline();
|
|
||||||
}
|
|
||||||
|
|
||||||
if (parent==nullptr) return false;
|
|
||||||
|
|
||||||
JKQTPDatastore* datastore=parent->getDatastore();
|
|
||||||
int imax=0;
|
|
||||||
int imin=0;
|
|
||||||
if (getIndexRange(imin, imax)) {
|
|
||||||
|
|
||||||
|
|
||||||
for (int i=imin; i<imax; i++) {
|
|
||||||
double yv=getBaseline();
|
|
||||||
if (JKQTPIsOKFloat(yv)) {
|
|
||||||
if (yv>maxy) maxy=yv;
|
|
||||||
if (yv<miny) miny=yv;
|
|
||||||
double xvsgz;
|
|
||||||
xvsgz=yv; SmallestGreaterZeroCompare_xvsgz();
|
|
||||||
}
|
|
||||||
yv=datastore->get(static_cast<size_t>(yColumn),static_cast<size_t>(i));
|
|
||||||
if (JKQTPIsOKFloat(yv)) {
|
|
||||||
if (yv>maxy) maxy=yv;
|
|
||||||
if (yv<miny) miny=yv;
|
|
||||||
double xvsgz;
|
|
||||||
xvsgz=yv; SmallestGreaterZeroCompare_xvsgz();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
} else {
|
} else {
|
||||||
bool start=false;
|
return getMinMaxWithErrorsAndBaseline(yColumn, yErrorColumn, yErrorColumnLower, yErrorSymmetric, miny, maxy, smallestGreaterZero);
|
||||||
miny=getBaseline();
|
|
||||||
maxy=getBaseline();
|
|
||||||
smallestGreaterZero=0;
|
|
||||||
if (getBaseline()>0) {
|
|
||||||
smallestGreaterZero=getBaseline();
|
|
||||||
miny=getBaseline();
|
|
||||||
maxy=getBaseline();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (parent==nullptr) return false;
|
|
||||||
|
|
||||||
const JKQTPDatastore* datastore=parent->getDatastore();
|
|
||||||
int imax=0;
|
|
||||||
int imin=0;
|
|
||||||
if (getIndexRange(imin, imax)) {
|
|
||||||
|
|
||||||
|
|
||||||
for (int i=imin; i<imax; i++) {
|
|
||||||
const double yv=datastore->get(static_cast<size_t>(yColumn),static_cast<size_t>(i))+getYErrorU(i, datastore);
|
|
||||||
const double yvv=datastore->get(static_cast<size_t>(yColumn),static_cast<size_t>(i))-getYErrorL(i, datastore);
|
|
||||||
if (JKQTPIsOKFloat(yv) && JKQTPIsOKFloat(yvv) ) {
|
|
||||||
if (start || yv>maxy) maxy=yv;
|
|
||||||
if (start || yv<miny) miny=yv;
|
|
||||||
double xvsgz;
|
|
||||||
xvsgz=yv; SmallestGreaterZeroCompare_xvsgz();
|
|
||||||
if (start || yvv>maxy) maxy=yvv;
|
|
||||||
if (start || yvv<miny) miny=yvv;
|
|
||||||
xvsgz=yvv; SmallestGreaterZeroCompare_xvsgz();
|
|
||||||
start=false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return !start;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return false;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
int JKQTPBarVerticalErrorGraph::getBarErrorColumn() const
|
int JKQTPBarVerticalErrorGraph::getBarErrorColumn() const
|
||||||
|
@ -25,8 +25,6 @@
|
|||||||
#include <QDebug>
|
#include <QDebug>
|
||||||
#include <iostream>
|
#include <iostream>
|
||||||
#include "jkqtplotter/jkqtptools.h"
|
#include "jkqtplotter/jkqtptools.h"
|
||||||
#include "jkqtplotter/graphs/jkqtpimage.h"
|
|
||||||
#include "jkqtplotter/jkqtpbaseelements.h"
|
|
||||||
#include "jkqtplotter/jkqtplotter.h"
|
#include "jkqtplotter/jkqtplotter.h"
|
||||||
#define SmallestGreaterZeroCompare_xvsgz() if ((xvsgz>10.0*DBL_MIN)&&((smallestGreaterZero<10.0*DBL_MIN) || (xvsgz<smallestGreaterZero))) smallestGreaterZero=xvsgz;
|
#define SmallestGreaterZeroCompare_xvsgz() if ((xvsgz>10.0*DBL_MIN)&&((smallestGreaterZero<10.0*DBL_MIN) || (xvsgz<smallestGreaterZero))) smallestGreaterZero=xvsgz;
|
||||||
|
|
||||||
@ -225,13 +223,7 @@ void JKQTPFilledCurveXGraph::draw(JKQTPEnhancedPainter& painter) {
|
|||||||
|
|
||||||
bool JKQTPFilledCurveXGraph::getYMinMax(double &miny, double &maxy, double &smallestGreaterZero)
|
bool JKQTPFilledCurveXGraph::getYMinMax(double &miny, double &maxy, double &smallestGreaterZero)
|
||||||
{
|
{
|
||||||
bool res=JKQTPXYGraph::getYMinMax(miny, maxy, smallestGreaterZero);
|
return getMinMaxWithBaseline(yColumn, miny,maxy,smallestGreaterZero);
|
||||||
if (getBaseline()>0 && getBaseline()<smallestGreaterZero) {
|
|
||||||
smallestGreaterZero=getBaseline();
|
|
||||||
}
|
|
||||||
miny=qMin(miny,getBaseline());
|
|
||||||
maxy=qMax(maxy,getBaseline());
|
|
||||||
return res;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
JKQTPFilledCurveYGraph::JKQTPFilledCurveYGraph(JKQTBasePlotter* parent):
|
JKQTPFilledCurveYGraph::JKQTPFilledCurveYGraph(JKQTBasePlotter* parent):
|
||||||
@ -247,13 +239,7 @@ JKQTPFilledCurveYGraph::JKQTPFilledCurveYGraph(JKQTPlotter *parent):
|
|||||||
|
|
||||||
bool JKQTPFilledCurveYGraph::getXMinMax(double &minx, double &maxx, double &smallestGreaterZero)
|
bool JKQTPFilledCurveYGraph::getXMinMax(double &minx, double &maxx, double &smallestGreaterZero)
|
||||||
{
|
{
|
||||||
bool res=JKQTPXYGraph::getXMinMax(minx, maxx, smallestGreaterZero);
|
return getMinMaxWithBaseline(xColumn, minx, maxx, smallestGreaterZero);
|
||||||
if (getBaseline()>0 && getBaseline()<smallestGreaterZero) {
|
|
||||||
smallestGreaterZero=getBaseline();
|
|
||||||
}
|
|
||||||
minx=qMin(minx,getBaseline());
|
|
||||||
maxx=qMax(maxx,getBaseline());
|
|
||||||
return res;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void JKQTPFilledCurveYGraph::draw(JKQTPEnhancedPainter &painter)
|
void JKQTPFilledCurveYGraph::draw(JKQTPEnhancedPainter &painter)
|
||||||
@ -406,78 +392,10 @@ void JKQTPFilledCurveXErrorGraph::drawErrorsAfter(JKQTPEnhancedPainter &painter)
|
|||||||
bool JKQTPFilledCurveXErrorGraph::getYMinMax(double &miny, double &maxy, double &smallestGreaterZero)
|
bool JKQTPFilledCurveXErrorGraph::getYMinMax(double &miny, double &maxy, double &smallestGreaterZero)
|
||||||
{
|
{
|
||||||
if (yErrorColumn<0 || yErrorStyle==JKQTPNoError) {
|
if (yErrorColumn<0 || yErrorStyle==JKQTPNoError) {
|
||||||
miny=0;
|
return getMinMaxWithBaseline(yColumn, miny, maxy, smallestGreaterZero);
|
||||||
maxy=0;
|
|
||||||
smallestGreaterZero=0;
|
|
||||||
if (getBaseline()>0) {
|
|
||||||
smallestGreaterZero=getBaseline();
|
|
||||||
miny=getBaseline();
|
|
||||||
maxy=getBaseline();
|
|
||||||
}
|
|
||||||
|
|
||||||
if (parent==nullptr) return false;
|
|
||||||
|
|
||||||
JKQTPDatastore* datastore=parent->getDatastore();
|
|
||||||
int imax=0;
|
|
||||||
int imin=0;
|
|
||||||
if (getIndexRange(imin, imax)) {
|
|
||||||
|
|
||||||
|
|
||||||
for (int i=imin; i<imax; i++) {
|
|
||||||
double yv=getBaseline();
|
|
||||||
if (JKQTPIsOKFloat(yv)) {
|
|
||||||
if (yv>maxy) maxy=yv;
|
|
||||||
if (yv<miny) miny=yv;
|
|
||||||
double xvsgz;
|
|
||||||
xvsgz=yv; SmallestGreaterZeroCompare_xvsgz();
|
|
||||||
}
|
|
||||||
yv=datastore->get(static_cast<size_t>(yColumn),static_cast<size_t>(i));
|
|
||||||
if (JKQTPIsOKFloat(yv)) {
|
|
||||||
if (yv>maxy) maxy=yv;
|
|
||||||
if (yv<miny) miny=yv;
|
|
||||||
double xvsgz;
|
|
||||||
xvsgz=yv; SmallestGreaterZeroCompare_xvsgz();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
} else {
|
} else {
|
||||||
bool start=false;
|
return getMinMaxWithErrorsAndBaseline(yColumn, yErrorColumn, yErrorColumnLower, yErrorSymmetric, miny, maxy, smallestGreaterZero);
|
||||||
miny=getBaseline();
|
|
||||||
maxy=getBaseline();
|
|
||||||
smallestGreaterZero=0;
|
|
||||||
if (getBaseline()>0) {
|
|
||||||
smallestGreaterZero=getBaseline();
|
|
||||||
miny=getBaseline();
|
|
||||||
maxy=getBaseline();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (parent==nullptr) return false;
|
|
||||||
|
|
||||||
const JKQTPDatastore* datastore=parent->getDatastore();
|
|
||||||
int imax=0;
|
|
||||||
int imin=0;
|
|
||||||
if (getIndexRange(imin, imax)) {
|
|
||||||
|
|
||||||
|
|
||||||
for (int i=imin; i<imax; i++) {
|
|
||||||
const double yv=datastore->get(static_cast<size_t>(yColumn),static_cast<size_t>(i))+getYErrorU(i, datastore);
|
|
||||||
const double yvv=datastore->get(static_cast<size_t>(yColumn),static_cast<size_t>(i))-getYErrorL(i, datastore);
|
|
||||||
if (JKQTPIsOKFloat(yv) && JKQTPIsOKFloat(yvv) ) {
|
|
||||||
if (start || yv>maxy) maxy=yv;
|
|
||||||
if (start || yv<miny) miny=yv;
|
|
||||||
double xvsgz;
|
|
||||||
xvsgz=yv; SmallestGreaterZeroCompare_xvsgz();
|
|
||||||
if (start || yvv>maxy) maxy=yvv;
|
|
||||||
if (start || yvv<miny) miny=yvv;
|
|
||||||
xvsgz=yvv; SmallestGreaterZeroCompare_xvsgz();
|
|
||||||
start=false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return !start;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return false;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
JKQTPFilledCurveYErrorGraph::JKQTPFilledCurveYErrorGraph(JKQTBasePlotter *parent):
|
JKQTPFilledCurveYErrorGraph::JKQTPFilledCurveYErrorGraph(JKQTBasePlotter *parent):
|
||||||
@ -502,78 +420,10 @@ bool JKQTPFilledCurveYErrorGraph::usesColumn(int c) const
|
|||||||
bool JKQTPFilledCurveYErrorGraph::getXMinMax(double &minx, double &maxx, double &smallestGreaterZero)
|
bool JKQTPFilledCurveYErrorGraph::getXMinMax(double &minx, double &maxx, double &smallestGreaterZero)
|
||||||
{
|
{
|
||||||
if (xErrorColumn<0 || xErrorStyle==JKQTPNoError) {
|
if (xErrorColumn<0 || xErrorStyle==JKQTPNoError) {
|
||||||
minx=0;
|
return getMinMaxWithBaseline(xColumn, minx, maxx, smallestGreaterZero);
|
||||||
maxx=0;
|
|
||||||
smallestGreaterZero=0;
|
|
||||||
if (getBaseline()>0) {
|
|
||||||
smallestGreaterZero=getBaseline();
|
|
||||||
minx=getBaseline();
|
|
||||||
maxx=getBaseline();
|
|
||||||
}
|
|
||||||
|
|
||||||
if (parent==nullptr) return false;
|
|
||||||
|
|
||||||
JKQTPDatastore* datastore=parent->getDatastore();
|
|
||||||
int imax=0;
|
|
||||||
int imin=0;
|
|
||||||
if (getIndexRange(imin, imax)) {
|
|
||||||
|
|
||||||
|
|
||||||
for (int i=imin; i<imax; i++) {
|
|
||||||
double yv=getBaseline();
|
|
||||||
if (JKQTPIsOKFloat(yv)) {
|
|
||||||
if (yv>maxx) maxx=yv;
|
|
||||||
if (yv<minx) minx=yv;
|
|
||||||
double xvsgz;
|
|
||||||
xvsgz=yv; SmallestGreaterZeroCompare_xvsgz();
|
|
||||||
}
|
|
||||||
yv=datastore->get(static_cast<size_t>(xColumn),static_cast<size_t>(i));
|
|
||||||
if (JKQTPIsOKFloat(yv)) {
|
|
||||||
if (yv>maxx) maxx=yv;
|
|
||||||
if (yv<minx) minx=yv;
|
|
||||||
double xvsgz;
|
|
||||||
xvsgz=yv; SmallestGreaterZeroCompare_xvsgz();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
} else {
|
} else {
|
||||||
bool start=false;
|
return getMinMaxWithErrorsAndBaseline(xColumn, xErrorColumn, xErrorColumnLower, xErrorSymmetric, minx, maxx, smallestGreaterZero);
|
||||||
minx=getBaseline();
|
|
||||||
maxx=getBaseline();
|
|
||||||
smallestGreaterZero=0;
|
|
||||||
if (getBaseline()>0) {
|
|
||||||
smallestGreaterZero=getBaseline();
|
|
||||||
minx=getBaseline();
|
|
||||||
maxx=getBaseline();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (parent==nullptr) return false;
|
|
||||||
|
|
||||||
const JKQTPDatastore* datastore=parent->getDatastore();
|
|
||||||
int imax=0;
|
|
||||||
int imin=0;
|
|
||||||
if (getIndexRange(imin, imax)) {
|
|
||||||
|
|
||||||
|
|
||||||
for (int i=imin; i<imax; i++) {
|
|
||||||
const double yv=datastore->get(static_cast<size_t>(xColumn),static_cast<size_t>(i))+getXErrorU(i, datastore);
|
|
||||||
const double yvv=datastore->get(static_cast<size_t>(xColumn),static_cast<size_t>(i))-getXErrorL(i, datastore);
|
|
||||||
if (JKQTPIsOKFloat(yv) && JKQTPIsOKFloat(yvv) ) {
|
|
||||||
if (start || yv>maxx) maxx=yv;
|
|
||||||
if (start || yv<minx) minx=yv;
|
|
||||||
double xvsgz;
|
|
||||||
xvsgz=yv; SmallestGreaterZeroCompare_xvsgz();
|
|
||||||
if (start || yvv>maxx) maxx=yvv;
|
|
||||||
if (start || yvv<minx) minx=yvv;
|
|
||||||
xvsgz=yvv; SmallestGreaterZeroCompare_xvsgz();
|
|
||||||
start=false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return !start;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return false;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void JKQTPFilledCurveYErrorGraph::drawErrorsAfter(JKQTPEnhancedPainter &painter)
|
void JKQTPFilledCurveYErrorGraph::drawErrorsAfter(JKQTPEnhancedPainter &painter)
|
||||||
|
@ -283,7 +283,6 @@ bool JKQTPImpulsesHorizontalGraph::getXMinMax(double &minx, double &maxx, double
|
|||||||
bool JKQTPImpulsesHorizontalGraph::getYMinMax(double &miny, double &maxy, double &smallestGreaterZero)
|
bool JKQTPImpulsesHorizontalGraph::getYMinMax(double &miny, double &maxy, double &smallestGreaterZero)
|
||||||
{
|
{
|
||||||
return getPositionsMinMax(miny, maxy, smallestGreaterZero);
|
return getPositionsMinMax(miny, maxy, smallestGreaterZero);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void JKQTPImpulsesHorizontalGraph::setKeyColumn(int __value)
|
void JKQTPImpulsesHorizontalGraph::setKeyColumn(int __value)
|
||||||
@ -338,7 +337,6 @@ bool JKQTPImpulsesVerticalGraph::getXMinMax(double &minx, double &maxx, double &
|
|||||||
bool JKQTPImpulsesVerticalGraph::getYMinMax(double &miny, double &maxy, double &smallestGreaterZero)
|
bool JKQTPImpulsesVerticalGraph::getYMinMax(double &miny, double &maxy, double &smallestGreaterZero)
|
||||||
{
|
{
|
||||||
return getValuesMinMax(miny, maxy, smallestGreaterZero);
|
return getValuesMinMax(miny, maxy, smallestGreaterZero);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void JKQTPImpulsesVerticalGraph::draw(JKQTPEnhancedPainter& painter) {
|
void JKQTPImpulsesVerticalGraph::draw(JKQTPEnhancedPainter& painter) {
|
||||||
@ -439,53 +437,12 @@ bool JKQTPImpulsesHorizontalErrorGraph::usesColumn(int c) const
|
|||||||
|
|
||||||
bool JKQTPImpulsesHorizontalErrorGraph::getXMinMax(double &minx, double &maxx, double &smallestGreaterZero)
|
bool JKQTPImpulsesHorizontalErrorGraph::getXMinMax(double &minx, double &maxx, double &smallestGreaterZero)
|
||||||
{
|
{
|
||||||
if (xErrorColumn>=0 && xErrorStyle!=JKQTPNoError) {
|
if (xErrorColumn<0 || xErrorStyle==JKQTPNoError) {
|
||||||
minx=0;
|
return getMinMaxWithBaseline(xColumn, minx, maxx, smallestGreaterZero);
|
||||||
maxx=0;
|
|
||||||
smallestGreaterZero=0;
|
|
||||||
if (getBaseline()>0) {
|
|
||||||
smallestGreaterZero=getBaseline();
|
|
||||||
minx=getBaseline();
|
|
||||||
maxx=getBaseline();
|
|
||||||
}
|
|
||||||
|
|
||||||
if (parent==nullptr) return false;
|
|
||||||
|
|
||||||
JKQTPDatastore* datastore=parent->getDatastore();
|
|
||||||
int imax=0;
|
|
||||||
int imin=0;
|
|
||||||
if (getIndexRange(imin, imax)) {
|
|
||||||
|
|
||||||
|
|
||||||
for (int i=imin; i<imax; i++) {
|
|
||||||
double yv=getBaseline();
|
|
||||||
if (JKQTPIsOKFloat(yv)) {
|
|
||||||
if (yv>maxx) maxx=yv;
|
|
||||||
if (yv<minx) minx=yv;
|
|
||||||
double xvsgz;
|
|
||||||
xvsgz=yv; SmallestGreaterZeroCompare_xvsgz();
|
|
||||||
}
|
|
||||||
yv=datastore->get(static_cast<size_t>(xColumn),static_cast<size_t>(i))+datastore->get(static_cast<size_t>(xErrorColumn),static_cast<size_t>(i));
|
|
||||||
if (JKQTPIsOKFloat(yv)) {
|
|
||||||
if (yv>maxx) maxx=yv;
|
|
||||||
if (yv<minx) minx=yv;
|
|
||||||
double xvsgz;
|
|
||||||
xvsgz=yv; SmallestGreaterZeroCompare_xvsgz();
|
|
||||||
}
|
|
||||||
yv=datastore->get(static_cast<size_t>(xColumn),static_cast<size_t>(i))-datastore->get(static_cast<size_t>(xErrorColumn),static_cast<size_t>(i));
|
|
||||||
if (JKQTPIsOKFloat(yv)) {
|
|
||||||
if (yv>maxx) maxx=yv;
|
|
||||||
if (yv<minx) minx=yv;
|
|
||||||
double xvsgz;
|
|
||||||
xvsgz=yv; SmallestGreaterZeroCompare_xvsgz();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
} else {
|
} else {
|
||||||
return JKQTPImpulsesHorizontalGraph::getXMinMax(minx,maxx,smallestGreaterZero);
|
return getMinMaxWithErrorsAndBaseline(xColumn, xErrorColumn, xErrorColumnLower, xErrorSymmetric, minx, maxx, smallestGreaterZero);
|
||||||
}
|
}
|
||||||
return false;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
int JKQTPImpulsesHorizontalErrorGraph::getErrorColumn() const
|
int JKQTPImpulsesHorizontalErrorGraph::getErrorColumn() const
|
||||||
@ -614,60 +571,11 @@ bool JKQTPImpulsesVerticalErrorGraph::usesColumn(int c) const
|
|||||||
|
|
||||||
bool JKQTPImpulsesVerticalErrorGraph::getYMinMax(double &miny, double &maxy, double &smallestGreaterZero)
|
bool JKQTPImpulsesVerticalErrorGraph::getYMinMax(double &miny, double &maxy, double &smallestGreaterZero)
|
||||||
{
|
{
|
||||||
if (yErrorColumn>=0 && yErrorStyle!=JKQTPNoError) {
|
if (yErrorColumn<0 || yErrorStyle==JKQTPNoError) {
|
||||||
miny=0;
|
return getMinMaxWithBaseline(yColumn, miny, maxy, smallestGreaterZero);
|
||||||
maxy=0;
|
|
||||||
smallestGreaterZero=0;
|
|
||||||
if (getBaseline()>0) {
|
|
||||||
smallestGreaterZero=getBaseline();
|
|
||||||
miny=getBaseline();
|
|
||||||
maxy=getBaseline();
|
|
||||||
}
|
|
||||||
|
|
||||||
if (parent==nullptr) return false;
|
|
||||||
|
|
||||||
JKQTPDatastore* datastore=parent->getDatastore();
|
|
||||||
int imax=0;
|
|
||||||
int imin=0;
|
|
||||||
if (getIndexRange(imin, imax)) {
|
|
||||||
|
|
||||||
|
|
||||||
for (int i=imin; i<imax; i++) {
|
|
||||||
double yv=getBaseline();
|
|
||||||
if (JKQTPIsOKFloat(yv)) {
|
|
||||||
if (yv>maxy) maxy=yv;
|
|
||||||
if (yv<miny) miny=yv;
|
|
||||||
double xvsgz;
|
|
||||||
xvsgz=yv; SmallestGreaterZeroCompare_xvsgz();
|
|
||||||
}
|
|
||||||
yv=datastore->get(static_cast<size_t>(yColumn),static_cast<size_t>(i));
|
|
||||||
if (JKQTPIsOKFloat(yv)) {
|
|
||||||
if (yv>maxy) maxy=yv;
|
|
||||||
if (yv<miny) miny=yv;
|
|
||||||
double xvsgz;
|
|
||||||
xvsgz=yv; SmallestGreaterZeroCompare_xvsgz();
|
|
||||||
}
|
|
||||||
yv=datastore->get(static_cast<size_t>(yColumn),static_cast<size_t>(i))+datastore->get(static_cast<size_t>(yErrorColumn),static_cast<size_t>(i));
|
|
||||||
if (JKQTPIsOKFloat(yv)) {
|
|
||||||
if (yv>maxy) maxy=yv;
|
|
||||||
if (yv<miny) miny=yv;
|
|
||||||
double xvsgz;
|
|
||||||
xvsgz=yv; SmallestGreaterZeroCompare_xvsgz();
|
|
||||||
}
|
|
||||||
yv=datastore->get(static_cast<size_t>(yColumn),static_cast<size_t>(i))-datastore->get(static_cast<size_t>(yErrorColumn),static_cast<size_t>(i));
|
|
||||||
if (JKQTPIsOKFloat(yv)) {
|
|
||||||
if (yv>maxy) maxy=yv;
|
|
||||||
if (yv<miny) miny=yv;
|
|
||||||
double xvsgz;
|
|
||||||
xvsgz=yv; SmallestGreaterZeroCompare_xvsgz();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
} else {
|
} else {
|
||||||
return JKQTPImpulsesVerticalGraph::getYMinMax(miny,maxy,smallestGreaterZero);
|
return getMinMaxWithErrorsAndBaseline(yColumn, yErrorColumn, yErrorColumnLower, yErrorSymmetric, miny, maxy, smallestGreaterZero);
|
||||||
}
|
}
|
||||||
return false;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -89,7 +89,7 @@ class JKQTPLOTTER_LIB_EXPORT JKQTPCoordinateAxisStyle {
|
|||||||
public:
|
public:
|
||||||
JKQTPCoordinateAxisStyle();
|
JKQTPCoordinateAxisStyle();
|
||||||
|
|
||||||
JKQTPCoordinateAxisStyle(const JKQTBasePlotterStyle& baseStyle);
|
explicit JKQTPCoordinateAxisStyle(const JKQTBasePlotterStyle& baseStyle);
|
||||||
|
|
||||||
|
|
||||||
/** \brief loads the plot properties from a <a href="http://doc.qt.io/qt-5/qsettings.html")">QSettings</a> object
|
/** \brief loads the plot properties from a <a href="http://doc.qt.io/qt-5/qsettings.html")">QSettings</a> object
|
||||||
@ -250,7 +250,7 @@ class JKQTPLOTTER_LIB_EXPORT JKQTPColorbarCoordinateAxisStyle: public JKQTPCoord
|
|||||||
JKQTPColorbarCoordinateAxisStyle();
|
JKQTPColorbarCoordinateAxisStyle();
|
||||||
|
|
||||||
/** \copydoc JKQTPCoordinateAxisStyle::JKQTPCoordinateAxisStyle(const JKQTBasePlotterStyle&) */
|
/** \copydoc JKQTPCoordinateAxisStyle::JKQTPCoordinateAxisStyle(const JKQTBasePlotterStyle&) */
|
||||||
JKQTPColorbarCoordinateAxisStyle(const JKQTBasePlotterStyle& baseStyle);
|
explicit JKQTPColorbarCoordinateAxisStyle(const JKQTBasePlotterStyle& baseStyle);
|
||||||
private:
|
private:
|
||||||
/** \brief modifies the members to match the requirements of colorbar axes */
|
/** \brief modifies the members to match the requirements of colorbar axes */
|
||||||
void initMembersForColorbars();
|
void initMembersForColorbars();
|
||||||
|
@ -1034,6 +1034,106 @@ void JKQTPXYBaselineGraph::setBaseline(double __value)
|
|||||||
m_baseline=__value;
|
m_baseline=__value;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool JKQTPXYBaselineGraph::getMinMaxWithBaseline(int dataColumn, double &minv, double &maxv, double &smallestGreaterZero)
|
||||||
|
{
|
||||||
|
minv=0;
|
||||||
|
maxv=0;
|
||||||
|
smallestGreaterZero=0;
|
||||||
|
if (getBaseline()>0) {
|
||||||
|
smallestGreaterZero=getBaseline();
|
||||||
|
minv=getBaseline();
|
||||||
|
maxv=getBaseline();
|
||||||
|
}
|
||||||
|
|
||||||
|
if (parent==nullptr) return false;
|
||||||
|
|
||||||
|
JKQTPDatastore* datastore=parent->getDatastore();
|
||||||
|
int imax=0;
|
||||||
|
int imin=0;
|
||||||
|
if (getIndexRange(imin, imax)) {
|
||||||
|
|
||||||
|
|
||||||
|
for (int i=imin; i<imax; i++) {
|
||||||
|
double yv=getBaseline();
|
||||||
|
if (JKQTPIsOKFloat(yv)) {
|
||||||
|
if (yv>maxv) maxv=yv;
|
||||||
|
if (yv<minv) minv=yv;
|
||||||
|
double xvsgz;
|
||||||
|
xvsgz=yv; SmallestGreaterZeroCompare_xvsgz();
|
||||||
|
}
|
||||||
|
yv=datastore->get(static_cast<size_t>(dataColumn),static_cast<size_t>(i));
|
||||||
|
if (JKQTPIsOKFloat(yv)) {
|
||||||
|
if (yv>maxv) maxv=yv;
|
||||||
|
if (yv<minv) minv=yv;
|
||||||
|
double xvsgz;
|
||||||
|
xvsgz=yv; SmallestGreaterZeroCompare_xvsgz();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool JKQTPXYBaselineGraph::getMinMaxWithErrorsAndBaseline(int dataColumn, int errorColumn, int errorColumnLower, bool errorSymmetric, double &minv, double &maxv, double &smallestGreaterZero)
|
||||||
|
{
|
||||||
|
bool start=false;
|
||||||
|
minv=getBaseline();
|
||||||
|
maxv=getBaseline();
|
||||||
|
smallestGreaterZero=0;
|
||||||
|
if (getBaseline()>0) {
|
||||||
|
smallestGreaterZero=getBaseline();
|
||||||
|
minv=getBaseline();
|
||||||
|
maxv=getBaseline();
|
||||||
|
}
|
||||||
|
|
||||||
|
if (parent==nullptr) return false;
|
||||||
|
|
||||||
|
const JKQTPDatastore* datastore=parent->getDatastore();
|
||||||
|
int imax=0;
|
||||||
|
int imin=0;
|
||||||
|
if (getIndexRange(imin, imax)) {
|
||||||
|
|
||||||
|
|
||||||
|
for (int i=imin; i<imax; i++) {
|
||||||
|
const double yv=datastore->get(static_cast<size_t>(dataColumn),static_cast<size_t>(i))+getErrorU(i, datastore, errorColumn);
|
||||||
|
const double yvv=datastore->get(static_cast<size_t>(dataColumn),static_cast<size_t>(i))-getErrorL(i, datastore, errorColumn, errorColumnLower, errorSymmetric);
|
||||||
|
if (JKQTPIsOKFloat(yv) && JKQTPIsOKFloat(yvv) ) {
|
||||||
|
if (start || yv>maxv) maxv=yv;
|
||||||
|
if (start || yv<minv) minv=yv;
|
||||||
|
double xvsgz;
|
||||||
|
xvsgz=yv; SmallestGreaterZeroCompare_xvsgz();
|
||||||
|
if (start || yvv>maxv) maxv=yvv;
|
||||||
|
if (start || yvv<minv) minv=yvv;
|
||||||
|
xvsgz=yvv; SmallestGreaterZeroCompare_xvsgz();
|
||||||
|
start=false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return !start;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
double JKQTPXYBaselineGraph::getErrorU(int i, const JKQTPDatastore *ds, int xErrorColumn) const
|
||||||
|
{
|
||||||
|
if (ds && xErrorColumn>=0 && i>=0 && i<static_cast<int>(ds->getRows(xErrorColumn))) {
|
||||||
|
return ds->get(xErrorColumn, static_cast<size_t>(i));
|
||||||
|
}
|
||||||
|
return 0.0;
|
||||||
|
}
|
||||||
|
|
||||||
|
double JKQTPXYBaselineGraph::getErrorL(int i, const JKQTPDatastore *ds, int xErrorColumn, int xErrorColumnLower, bool xErrorSymmetric) const
|
||||||
|
{
|
||||||
|
if (ds) {
|
||||||
|
if (xErrorSymmetric) {
|
||||||
|
if (xErrorColumn>=0 && i>=0 && i<static_cast<int>(ds->getRows(xErrorColumn))) return ds->get(xErrorColumn, static_cast<size_t>(i));
|
||||||
|
} else {
|
||||||
|
if (xErrorColumnLower>=0 && i>=0 && i<static_cast<int>(ds->getRows(xErrorColumnLower))) return ds->get(xErrorColumnLower, static_cast<size_t>(i));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return 0.0;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
JKQTPPlotAnnotationElement::JKQTPPlotAnnotationElement(JKQTBasePlotter *parent):
|
JKQTPPlotAnnotationElement::JKQTPPlotAnnotationElement(JKQTBasePlotter *parent):
|
||||||
JKQTPPlotElement(parent)
|
JKQTPPlotElement(parent)
|
||||||
{
|
{
|
||||||
|
@ -688,12 +688,24 @@ public slots:
|
|||||||
void setBaseline(double __value);
|
void setBaseline(double __value);
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
|
/** \brief can be called by JKQTPGraph::getXMinMax() or JKQTPGraph::getYMinMax() calculates min/max/... for data from the given column, including the baseline */
|
||||||
|
bool getMinMaxWithBaseline(int dataColumn, double &minv, double &maxv, double &smallestGreaterZero);
|
||||||
|
/** \brief can be called by JKQTPGraph::getXMinMax() or JKQTPGraph::getYMinMax() calculates min/max/... for data from the given column, including the baseline and an optional error */
|
||||||
|
bool getMinMaxWithErrorsAndBaseline(int dataColumn, int errorColumn, int errorColumnLower, bool errorSymmetric, double &minv, double &maxv, double &smallestGreaterZero);
|
||||||
|
|
||||||
|
|
||||||
/** \brief baseline of the plot (NOTE: 0 is interpreted as until plot border in log-mode!!!)
|
/** \brief baseline of the plot (NOTE: 0 is interpreted as until plot border in log-mode!!!)
|
||||||
*
|
*
|
||||||
* \image html impulsesplot_baseline.png
|
* \image html impulsesplot_baseline.png
|
||||||
*/
|
*/
|
||||||
double m_baseline;
|
double m_baseline;
|
||||||
|
|
||||||
|
private:
|
||||||
|
/** \brief returns the upper error for the i-th datapoint, read from datastore \a ds */
|
||||||
|
double getErrorU(int i, const JKQTPDatastore* ds, int xErrorColumn) const;
|
||||||
|
/** \brief returns the lower error for the i-th datapoint, read from datastore \a ds */
|
||||||
|
double getErrorL(int i, const JKQTPDatastore *ds, int xErrorColumn, int xErrorColumnLower, bool xErrorSymmetric) const;
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
@ -121,7 +121,7 @@ class JKQTPLOTTER_LIB_EXPORT JKQTGeometricSpecificStyleProperties: public JKQTGr
|
|||||||
Q_GADGET
|
Q_GADGET
|
||||||
#endif
|
#endif
|
||||||
public:
|
public:
|
||||||
JKQTGeometricSpecificStyleProperties(const JKQTBasePlotterStyle& parent);
|
explicit JKQTGeometricSpecificStyleProperties(const JKQTBasePlotterStyle& parent);
|
||||||
JKQTGeometricSpecificStyleProperties(const JKQTBasePlotterStyle& parent, const JKQTGraphsSpecificStyleProperties& other);
|
JKQTGeometricSpecificStyleProperties(const JKQTBasePlotterStyle& parent, const JKQTGraphsSpecificStyleProperties& other);
|
||||||
JKQTGeometricSpecificStyleProperties(JKQTPPlotStyleType type, const JKQTBasePlotterStyle& parent);
|
JKQTGeometricSpecificStyleProperties(JKQTPPlotStyleType type, const JKQTBasePlotterStyle& parent);
|
||||||
JKQTGeometricSpecificStyleProperties(JKQTPPlotStyleType type, const JKQTGraphsSpecificStyleProperties& other, const JKQTBasePlotterStyle &parent);
|
JKQTGeometricSpecificStyleProperties(JKQTPPlotStyleType type, const JKQTGraphsSpecificStyleProperties& other, const JKQTBasePlotterStyle &parent);
|
||||||
@ -171,7 +171,7 @@ class JKQTPLOTTER_LIB_EXPORT JKQTAnnotationsSpecificStyleProperties: public JKQT
|
|||||||
Q_GADGET
|
Q_GADGET
|
||||||
#endif
|
#endif
|
||||||
public:
|
public:
|
||||||
JKQTAnnotationsSpecificStyleProperties(const JKQTBasePlotterStyle& parent);
|
explicit JKQTAnnotationsSpecificStyleProperties(const JKQTBasePlotterStyle& parent);
|
||||||
JKQTAnnotationsSpecificStyleProperties(const JKQTBasePlotterStyle& parent, const JKQTGraphsSpecificStyleProperties& other);
|
JKQTAnnotationsSpecificStyleProperties(const JKQTBasePlotterStyle& parent, const JKQTGraphsSpecificStyleProperties& other);
|
||||||
JKQTAnnotationsSpecificStyleProperties(const JKQTAnnotationsSpecificStyleProperties& other)=default;
|
JKQTAnnotationsSpecificStyleProperties(const JKQTAnnotationsSpecificStyleProperties& other)=default;
|
||||||
JKQTAnnotationsSpecificStyleProperties(JKQTAnnotationsSpecificStyleProperties&& other)=default;
|
JKQTAnnotationsSpecificStyleProperties(JKQTAnnotationsSpecificStyleProperties&& other)=default;
|
||||||
@ -216,7 +216,7 @@ class JKQTPLOTTER_LIB_EXPORT JKQTBarchartSpecificStyleProperties: public JKQTGra
|
|||||||
Q_GADGET
|
Q_GADGET
|
||||||
#endif
|
#endif
|
||||||
public:
|
public:
|
||||||
JKQTBarchartSpecificStyleProperties(const JKQTBasePlotterStyle& parent);
|
explicit JKQTBarchartSpecificStyleProperties(const JKQTBasePlotterStyle& parent);
|
||||||
JKQTBarchartSpecificStyleProperties(const JKQTBasePlotterStyle& parent, const JKQTGraphsSpecificStyleProperties& other);
|
JKQTBarchartSpecificStyleProperties(const JKQTBasePlotterStyle& parent, const JKQTGraphsSpecificStyleProperties& other);
|
||||||
JKQTBarchartSpecificStyleProperties(const JKQTBarchartSpecificStyleProperties& other)=default;
|
JKQTBarchartSpecificStyleProperties(const JKQTBarchartSpecificStyleProperties& other)=default;
|
||||||
JKQTBarchartSpecificStyleProperties(JKQTBarchartSpecificStyleProperties&& other)=default;
|
JKQTBarchartSpecificStyleProperties(JKQTBarchartSpecificStyleProperties&& other)=default;
|
||||||
@ -262,7 +262,7 @@ class JKQTPLOTTER_LIB_EXPORT JKQTImpulseSpecificStyleProperties: public JKQTGrap
|
|||||||
Q_GADGET
|
Q_GADGET
|
||||||
#endif
|
#endif
|
||||||
public:
|
public:
|
||||||
JKQTImpulseSpecificStyleProperties(const JKQTBasePlotterStyle& parent);
|
explicit JKQTImpulseSpecificStyleProperties(const JKQTBasePlotterStyle& parent);
|
||||||
JKQTImpulseSpecificStyleProperties(const JKQTBasePlotterStyle& parent, const JKQTGraphsSpecificStyleProperties& other);
|
JKQTImpulseSpecificStyleProperties(const JKQTBasePlotterStyle& parent, const JKQTGraphsSpecificStyleProperties& other);
|
||||||
JKQTImpulseSpecificStyleProperties(const JKQTImpulseSpecificStyleProperties& other)=default;
|
JKQTImpulseSpecificStyleProperties(const JKQTImpulseSpecificStyleProperties& other)=default;
|
||||||
JKQTImpulseSpecificStyleProperties(JKQTImpulseSpecificStyleProperties&& other)=default;
|
JKQTImpulseSpecificStyleProperties(JKQTImpulseSpecificStyleProperties&& other)=default;
|
||||||
@ -301,7 +301,7 @@ class JKQTPLOTTER_LIB_EXPORT JKQTGraphsBaseStyle {
|
|||||||
Q_GADGET
|
Q_GADGET
|
||||||
#endif
|
#endif
|
||||||
public:
|
public:
|
||||||
JKQTGraphsBaseStyle(const JKQTBasePlotterStyle& parent);
|
explicit JKQTGraphsBaseStyle(const JKQTBasePlotterStyle& parent);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -40,7 +40,7 @@ class JKQTPLOTTER_LIB_EXPORT JKQTPKeyStyle {
|
|||||||
Q_GADGET
|
Q_GADGET
|
||||||
public:
|
public:
|
||||||
JKQTPKeyStyle();
|
JKQTPKeyStyle();
|
||||||
JKQTPKeyStyle(const JKQTBasePlotterStyle& baseStyle);
|
explicit JKQTPKeyStyle(const JKQTBasePlotterStyle& baseStyle);
|
||||||
|
|
||||||
|
|
||||||
/** \brief loads the plot properties from a <a href="http://doc.qt.io/qt-5/qsettings.html")">QSettings</a> object
|
/** \brief loads the plot properties from a <a href="http://doc.qt.io/qt-5/qsettings.html")">QSettings</a> object
|
||||||
|
@ -653,7 +653,6 @@ void JKQTPlotter::paintUserAction() {
|
|||||||
QVector<QString> txts;
|
QVector<QString> txts;
|
||||||
QVector<QColor> colors;
|
QVector<QColor> colors;
|
||||||
const int txtoffset=4;
|
const int txtoffset=4;
|
||||||
QString txt;
|
|
||||||
double ascent=0,descent=0,strikeout=0,width=0;
|
double ascent=0,descent=0,strikeout=0,width=0;
|
||||||
getPlotter()->getMathText()->setFontSize(plotterStyle.userActionFontSize);
|
getPlotter()->getMathText()->setFontSize(plotterStyle.userActionFontSize);
|
||||||
getPlotter()->getMathText()->setFontSpecial(plotterStyle.userActionFontName);
|
getPlotter()->getMathText()->setFontSpecial(plotterStyle.userActionFontName);
|
||||||
@ -1373,7 +1372,7 @@ void JKQTPlotter::synchronizeToMaster(JKQTPlotter *master, JKQTBasePlotter::Sync
|
|||||||
if (masterPlotterX) disconnect(masterPlotterX->getPlotter(), SIGNAL(plotScalingRecalculated()), this, SLOT(masterPlotScalingRecalculated()));
|
if (masterPlotterX) disconnect(masterPlotterX->getPlotter(), SIGNAL(plotScalingRecalculated()), this, SLOT(masterPlotScalingRecalculated()));
|
||||||
if (masterPlotterY) disconnect(masterPlotterY->getPlotter(), SIGNAL(plotScalingRecalculated()), this, SLOT(masterPlotScalingRecalculated()));
|
if (masterPlotterY) disconnect(masterPlotterY->getPlotter(), SIGNAL(plotScalingRecalculated()), this, SLOT(masterPlotScalingRecalculated()));
|
||||||
|
|
||||||
plotter->synchronizeToMaster(master->getPlotter(), synchronizeDirection, synchronizeAxisLength, synchronizeZoomingMasterToSlave, synchronizeZoomingSlaveToMaster);
|
if (master) plotter->synchronizeToMaster(master->getPlotter(), synchronizeDirection, synchronizeAxisLength, synchronizeZoomingMasterToSlave, synchronizeZoomingSlaveToMaster);
|
||||||
|
|
||||||
if (synchronizeDirection==JKQTBasePlotter::sdXAxis || synchronizeDirection==JKQTBasePlotter::sdXYAxes) {
|
if (synchronizeDirection==JKQTBasePlotter::sdXAxis || synchronizeDirection==JKQTBasePlotter::sdXYAxes) {
|
||||||
masterPlotterX=master;
|
masterPlotterX=master;
|
||||||
|
Before Width: | Height: | Size: 90 KiB After Width: | Height: | Size: 90 KiB |
Before Width: | Height: | Size: 10 KiB After Width: | Height: | Size: 10 KiB |
Before Width: | Height: | Size: 37 KiB After Width: | Height: | Size: 37 KiB |
Before Width: | Height: | Size: 5.9 KiB After Width: | Height: | Size: 5.9 KiB |
Before Width: | Height: | Size: 29 KiB After Width: | Height: | Size: 29 KiB |
Before Width: | Height: | Size: 8.1 KiB After Width: | Height: | Size: 8.1 KiB |