· · ·
plottable-statisticalbox.h
Go to the documentation of this file.
1 /***************************************************************************
2 ** **
3 ** QCustomPlot, an easy to use, modern plotting widget for Qt **
4 ** Copyright (C) 2011, 2012, 2013, 2014 Emanuel Eichhammer **
5 ** **
6 ** This program is free software: you can redistribute it and/or modify **
7 ** it under the terms of the GNU General Public License as published by **
8 ** the Free Software Foundation, either version 3 of the License, or **
9 ** (at your option) any later version. **
10 ** **
11 ** This program is distributed in the hope that it will be useful, **
12 ** but WITHOUT ANY WARRANTY; without even the implied warranty of **
13 ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the **
14 ** GNU General Public License for more details. **
15 ** **
16 ** You should have received a copy of the GNU General Public License **
17 ** along with this program. If not, see http://www.gnu.org/licenses/. **
18 ** **
19 ****************************************************************************
20 ** Author: Emanuel Eichhammer **
21 ** Website/Contact: http://www.qcustomplot.com/ **
22 ** Date: 07.04.14 **
23 ** Version: 1.2.1 **
24 ****************************************************************************/
26 #ifndef QCP_PLOTTABLE_STATISTICALBOX_H
27 #define QCP_PLOTTABLE_STATISTICALBOX_H
28
29 #include "../global.h"
30 #include "../range.h"
31 #include "../plottable.h"
32 #include "../painter.h"
33
34 class QCPPainter;
35 class QCPAxis;
36
37 class QCP_LIB_DECL QCPStatisticalBox : public QCPAbstractPlottable
38 {
39 Q_OBJECT
41 Q_PROPERTY(double key READ key WRITE setKey)
42 Q_PROPERTY(double minimum READ minimum WRITE setMinimum)
43 Q_PROPERTY(double lowerQuartile READ lowerQuartile WRITE setLowerQuartile)
44 Q_PROPERTY(double median READ median WRITE setMedian)
45 Q_PROPERTY(double upperQuartile READ upperQuartile WRITE setUpperQuartile)
46 Q_PROPERTY(double maximum READ maximum WRITE setMaximum)
47 Q_PROPERTY(QVector<double> outliers READ outliers WRITE setOutliers)
48 Q_PROPERTY(double width READ width WRITE setWidth)
49 Q_PROPERTY(double whiskerWidth READ whiskerWidth WRITE setWhiskerWidth)
50 Q_PROPERTY(QPen whiskerPen READ whiskerPen WRITE setWhiskerPen)
51 Q_PROPERTY(QPen whiskerBarPen READ whiskerBarPen WRITE setWhiskerBarPen)
52 Q_PROPERTY(QPen medianPen READ medianPen WRITE setMedianPen)
53 Q_PROPERTY(QCPScatterStyle outlierStyle READ outlierStyle WRITE setOutlierStyle)
55 public:
56 explicit QCPStatisticalBox(QCPAxis *keyAxis, QCPAxis *valueAxis);
57
58 // getters:
59 double key() const { return mKey; }
60 double minimum() const { return mMinimum; }
61 double lowerQuartile() const { return mLowerQuartile; }
62 double median() const { return mMedian; }
63 double upperQuartile() const { return mUpperQuartile; }
64 double maximum() const { return mMaximum; }
65 QVector<double> outliers() const { return mOutliers; }
66 double width() const { return mWidth; }
67 double whiskerWidth() const { return mWhiskerWidth; }
68 QPen whiskerPen() const { return mWhiskerPen; }
69 QPen whiskerBarPen() const { return mWhiskerBarPen; }
70 QPen medianPen() const { return mMedianPen; }
71 QCPScatterStyle outlierStyle() const { return mOutlierStyle; }
72
73 // setters:
74 void setKey(double key);
75 void setMinimum(double value);
76 void setLowerQuartile(double value);
77 void setMedian(double value);
78 void setUpperQuartile(double value);
79 void setMaximum(double value);
80 void setOutliers(const QVector<double> &values);
81 void setData(double key, double minimum, double lowerQuartile, double median, double upperQuartile, double maximum);
82 void setWidth(double width);
83 void setWhiskerWidth(double width);
84 void setWhiskerPen(const QPen &pen);
85 void setWhiskerBarPen(const QPen &pen);
86 void setMedianPen(const QPen &pen);
87 void setOutlierStyle(const QCPScatterStyle &style);
88
89 // non-property methods:
90 virtual void clearData();
91 virtual double selectTest(const QPointF &pos, bool onlySelectable, QVariant *details=0) const;
92
93 protected:
94 // property members:
95 QVector<double> mOutliers;
96 double mKey, mMinimum, mLowerQuartile, mMedian, mUpperQuartile, mMaximum;
97 double mWidth;
98 double mWhiskerWidth;
99 QPen mWhiskerPen, mWhiskerBarPen, mMedianPen;
100 QCPScatterStyle mOutlierStyle;
101
102 // reimplemented virtual methods:
103 virtual void draw(QCPPainter *painter);
104 virtual void drawLegendIcon(QCPPainter *painter, const QRectF &rect) const;
105 virtual QCPRange getKeyRange(bool &foundRange, SignDomain inSignDomain=sdBoth) const;
106 virtual QCPRange getValueRange(bool &foundRange, SignDomain inSignDomain=sdBoth) const;
107
108 // introduced virtual methods:
109 virtual void drawQuartileBox(QCPPainter *painter, QRectF *quartileBox=0) const;
110 virtual void drawMedian(QCPPainter *painter) const;
111 virtual void drawWhiskers(QCPPainter *painter) const;
112 virtual void drawOutliers(QCPPainter *painter) const;
113
114 friend class QCustomPlot;
115 friend class QCPLegend;
116 };
117
118 #endif // QCP_PLOTTABLE_STATISTICALBOX_H
Generated with Doxygen 1.8.1.2