SedSat3 1.1.6
Sediment Source Apportionment Tool - Advanced statistical methods for environmental pollution research
Loading...
Searching...
No Matches
generalplotter.h
Go to the documentation of this file.
1#pragma once
2
3#include <QPoint>
4#include "qcustomplot.h"
5#include "TimeSeriesSet.h"
6
7class QRubberBand;
8class QMouseEvent;
9class QWidget;
10#include "vector"
11
12//#ifdef _WINDOWS
13//#include "drand.h"
14//#endif
15
16enum class AxisScale {normal, log};
17enum class Axis {x, y};
18
19//using namespace std;
20
21class GeneralPlotter : public QCustomPlot
22{
23
24
25public:
26 GeneralPlotter(QWidget * parent = 0);
27 virtual ~GeneralPlotter();
28 void Clear();
29 bool AddScatter(const string &name, const vector<double> &x, const vector<double> &y, const QCPScatterStyle &symbol = QCPScatterStyle::ssDisc);
30 bool AddScatter(const string &name, const vector<string> &x, const vector<double> &y, const QCPScatterStyle &symbol = QCPScatterStyle::ssDisc);
31 bool AddScatters(const vector<string> names, const vector<vector<double>> &x,const vector<vector<double>> &y);
32 bool AddScatters(const vector<string> names, const vector<string> &x,const vector<vector<double>> &y);
33 bool AddNonUniformScatter(const map<string,vector<double>> &data, int shape_counter=0);
34 bool AddTimeSeries(const string &name, const vector<double> &x, const vector<double> &y);
35 bool AddTimeSeriesSet(const string &name, const vector<vector<double>> &x, const vector<vector<double>> &y);
36 bool SetYAxisScaleType(AxisScale axisscale);
37 void setZoomMode(bool mode);
38 void ZoomExtends();
39 void SetRange(const vector<double> &range, const Axis &whichaxis);
40 void SetLegend(bool onoff);
41
42
43
44private:
45 vector<double> x_max_min_range;
46 vector<double> y_max_min_range;
47 static QVector<QCPScatterStyle::ScatterShape> shapes;
48
49private slots:
50 void mousePressEvent(QMouseEvent * event) override;
51 void mouseMoveEvent(QMouseEvent * event) override;
52 void wheelEvent(QWheelEvent * event);
53 void mouseReleaseEvent(QMouseEvent * event) override;
54 void axisDoubleClick(QCPAxis * axis, QCPAxis::SelectablePart part, QMouseEvent * event);
55private:
57 QRubberBand * mRubberBand;
58 QPoint mOrigin;
59};
60
61QVector<QCPScatterStyle::ScatterShape> Make_Shapes();
62
63template <class T>
64static inline QVector<T> QVectorfromStdVector(const std::vector<T> &vector)
65{
66 return QVector<T>(vector.begin(), vector.end());
67}
68
69template <class T>
70static inline QList<T> QListfromStdVector(const std::vector<T> &vector)
71{
72 return QList<T>(vector.begin(), vector.end());
73}
74
75template <class T>
76static inline QVector<T> fromStdVector(const std::vector<T> &vector);
77
QRubberBand * mRubberBand
bool AddScatters(const vector< string > names, const vector< vector< double > > &x, const vector< vector< double > > &y)
static QVector< QCPScatterStyle::ScatterShape > shapes
void setZoomMode(bool mode)
void axisDoubleClick(QCPAxis *axis, QCPAxis::SelectablePart part, QMouseEvent *event)
bool SetYAxisScaleType(AxisScale axisscale)
virtual ~GeneralPlotter()
void mouseReleaseEvent(QMouseEvent *event) override
void SetLegend(bool onoff)
bool AddScatter(const string &name, const vector< double > &x, const vector< double > &y, const QCPScatterStyle &symbol=QCPScatterStyle::ssDisc)
void mouseMoveEvent(QMouseEvent *event) override
bool AddTimeSeriesSet(const string &name, const vector< vector< double > > &x, const vector< vector< double > > &y)
bool AddNonUniformScatter(const map< string, vector< double > > &data, int shape_counter=0)
void SetRange(const vector< double > &range, const Axis &whichaxis)
bool AddTimeSeries(const string &name, const vector< double > &x, const vector< double > &y)
vector< double > x_max_min_range
void wheelEvent(QWheelEvent *event)
vector< double > y_max_min_range
void mousePressEvent(QMouseEvent *event) override
static QVector< T > QVectorfromStdVector(const std::vector< T > &vector)
static QVector< T > fromStdVector(const std::vector< T > &vector)
AxisScale
static QList< T > QListfromStdVector(const std::vector< T > &vector)
QVector< QCPScatterStyle::ScatterShape > Make_Shapes()