From ba259fb1d66c242d9503ba9695ce55826370267e Mon Sep 17 00:00:00 2001 From: Berthold Stoeger Date: Tue, 19 Jan 2021 11:18:10 +0100 Subject: statistics: make confidence area and regression line opt-in This is not perfect - the polygon of the confidence area is calculated even if it is not shown. Oh well. Signed-off-by: Berthold Stoeger --- stats/regressionitem.cpp | 31 +++++++++++++++++++++++-------- 1 file changed, 23 insertions(+), 8 deletions(-) (limited to 'stats/regressionitem.cpp') diff --git a/stats/regressionitem.cpp b/stats/regressionitem.cpp index db02cf688..cd817c9eb 100644 --- a/stats/regressionitem.cpp +++ b/stats/regressionitem.cpp @@ -11,7 +11,8 @@ static const double regressionLineWidth = 2.0; RegressionItem::RegressionItem(StatsView &view, regression_data reg, StatsAxis *xAxis, StatsAxis *yAxis) : ChartPixmapItem(view, ChartZValue::ChartFeatures), - xAxis(xAxis), yAxis(yAxis), reg(reg) + xAxis(xAxis), yAxis(yAxis), reg(reg), + regression(true), confidence(true) { } @@ -19,6 +20,16 @@ RegressionItem::~RegressionItem() { } +void RegressionItem::setFeatures(bool regressionIn, bool confidenceIn) +{ + if (regressionIn == regression && confidenceIn == confidence) + return; + regression = regressionIn; + confidence = confidenceIn; + updatePosition(); +} + +// Note: this calculates the confidence area, even if it isn't shown. Might want to optimize this. void RegressionItem::updatePosition() { if (!xAxis || !yAxis) @@ -74,14 +85,18 @@ void RegressionItem::updatePosition() ChartPixmapItem::resize(QSizeF(screenMaxX - screenMinX, screenMaxY - screenMinY)); img->fill(Qt::transparent); - QColor col(regressionItemColor); - col.setAlphaF(reg.r2); - painter->setPen(Qt::NoPen); - painter->setBrush(QBrush(col)); - painter->drawPolygon(poly); + if (confidence) { + QColor col(regressionItemColor); + col.setAlphaF(reg.r2); + painter->setPen(Qt::NoPen); + painter->setBrush(QBrush(col)); + painter->drawPolygon(poly); + } - painter->setPen(QPen(regressionItemColor, regressionLineWidth)); - painter->drawLine(QPointF(linePolygon[0]), QPointF(linePolygon[1])); + if (regression) { + painter->setPen(QPen(regressionItemColor, regressionLineWidth)); + painter->drawLine(QPointF(linePolygon[0]), QPointF(linePolygon[1])); + } ChartPixmapItem::setPos(offset); } -- cgit v1.2.3-70-g09d2