mirror of
https://github.com/slsdetectorgroup/slsDetectorPackage.git
synced 2025-05-06 04:40:02 +02:00
finally works also with qwt6 - 2D plot color scales changed to root's
git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorGui@102 af1100a4-978c-4157-bff7-07162d2ba061
This commit is contained in:
parent
1d03067bd5
commit
3e979fdece
@ -82,6 +82,18 @@ class SlsQt2DHist: public QwtRasterData{
|
|||||||
virtual QwtDoubleInterval range() const{ return QwtDoubleInterval(z_min,z_max);}
|
virtual QwtDoubleInterval range() const{ return QwtDoubleInterval(z_min,z_max);}
|
||||||
#else
|
#else
|
||||||
virtual QwtInterval range() const{ return QwtInterval(z_min,z_max);}
|
virtual QwtInterval range() const{ return QwtInterval(z_min,z_max);}
|
||||||
|
virtual QwtInterval interval(Qt::Axis axis) const {
|
||||||
|
switch (axis){
|
||||||
|
case Qt::ZAxis:
|
||||||
|
return QwtInterval(z_min,z_max);
|
||||||
|
case Qt::XAxis:
|
||||||
|
return QwtInterval(x_min,x_max);
|
||||||
|
case Qt::YAxis:
|
||||||
|
return QwtInterval(y_min,y_max);
|
||||||
|
default:
|
||||||
|
return QwtInterval(z_min,z_max);
|
||||||
|
};
|
||||||
|
};
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
@ -110,6 +122,12 @@ class SlsQt2DHist: public QwtRasterData{
|
|||||||
double left_v = value_between_points(y0,data[b00],y1,data[b01],y);
|
double left_v = value_between_points(y0,data[b00],y1,data[b01],y);
|
||||||
double right_v = value_between_points(y0,data[b10],y1,data[b11],y);
|
double right_v = value_between_points(y0,data[b10],y1,data[b11],y);
|
||||||
//horazontal extrap
|
//horazontal extrap
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
return 0.5;
|
||||||
|
|
||||||
|
|
||||||
return value_between_points(x_min+(x_int+0.5)*x_width,left_v,
|
return value_between_points(x_min+(x_int+0.5)*x_width,left_v,
|
||||||
x_min+(x_int+1.5)*x_width,right_v,x);
|
x_min+(x_int+1.5)*x_width,right_v,x);
|
||||||
}
|
}
|
||||||
|
@ -52,6 +52,7 @@ private:
|
|||||||
void SetupColorMap();
|
void SetupColorMap();
|
||||||
|
|
||||||
QwtLinearColorMap* myColourMap(QVector<double> colourStops);
|
QwtLinearColorMap* myColourMap(QVector<double> colourStops);
|
||||||
|
QwtLinearColorMap* myColourMap(int log=0);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@ -85,13 +86,6 @@ public:
|
|||||||
void SetData(int nbinsx, double xmin, double xmax, int nbinsy,double ymin, double ymax,double *d,double zmin=0, double zmax=-1){
|
void SetData(int nbinsx, double xmin, double xmax, int nbinsy,double ymin, double ymax,double *d,double zmin=0, double zmax=-1){
|
||||||
hist->SetData(nbinsx,xmin,xmax,nbinsy,ymin,ymax,d,zmin,zmax);
|
hist->SetData(nbinsx,xmin,xmax,nbinsy,ymin,ymax,d,zmin,zmax);
|
||||||
|
|
||||||
#if QWT_VERSION<0x060000
|
|
||||||
;
|
|
||||||
#else
|
|
||||||
d_spectrogram->setData(hist);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
double* GetDataPtr() {return hist->GetDataPtr();}
|
double* GetDataPtr() {return hist->GetDataPtr();}
|
||||||
|
@ -60,6 +60,8 @@ void SlsQt2DHist::SetData(int nbinsx, double xmin, double xmax, int nbinsy,doubl
|
|||||||
#else
|
#else
|
||||||
setInterval( Qt::XAxis,QwtInterval(xmin,xmax));
|
setInterval( Qt::XAxis,QwtInterval(xmin,xmax));
|
||||||
setInterval( Qt::YAxis,QwtInterval(ymin,ymax));
|
setInterval( Qt::YAxis,QwtInterval(ymin,ymax));
|
||||||
|
// setInterval( Qt::ZAxis,QwtInterval(zmin,zmax));
|
||||||
|
//setInterval( Qt::ZAxis,QwtInterval(0.,1.));
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
}
|
}
|
||||||
@ -103,6 +105,7 @@ void SlsQt2DHist::SetMinMax(double zmin,double zmax){
|
|||||||
if(z_min>0) z_min/=1.02; else z_min*=1.02;
|
if(z_min>0) z_min/=1.02; else z_min*=1.02;
|
||||||
if(z_max>0) z_max*=1.02; else z_max/=1.02;
|
if(z_max>0) z_max*=1.02; else z_max/=1.02;
|
||||||
}
|
}
|
||||||
|
setInterval( Qt::ZAxis,QwtInterval(z_min,z_max));
|
||||||
}
|
}
|
||||||
|
|
||||||
double SlsQt2DHist::GetMean(){
|
double SlsQt2DHist::GetMean(){
|
||||||
|
@ -56,33 +56,19 @@ SlsQt2DPlot::SlsQt2DPlot(QWidget *parent):QwtPlot(parent){
|
|||||||
|
|
||||||
|
|
||||||
void SlsQt2DPlot::SetupColorMap(){
|
void SlsQt2DPlot::SetupColorMap(){
|
||||||
QVector<double> cs(0);
|
|
||||||
|
|
||||||
|
|
||||||
cs.append(0);
|
|
||||||
cs.append(0.1);
|
|
||||||
cs.append(0.4);
|
|
||||||
cs.append(0.6);
|
|
||||||
cs.append(0.95);
|
|
||||||
cs.append(1.);
|
|
||||||
|
|
||||||
colorMapLinearScale = myColourMap(cs);
|
|
||||||
|
colorMapLinearScale = myColourMap(0);
|
||||||
#if QWT_VERSION<0x060000
|
#if QWT_VERSION<0x060000
|
||||||
d_spectrogram->setColorMap(*colorMapLinearScale);
|
d_spectrogram->setColorMap(*colorMapLinearScale);
|
||||||
#else
|
#else
|
||||||
d_spectrogram->setColorMap(colorMapLinearScale);
|
d_spectrogram->setColorMap(colorMapLinearScale);
|
||||||
#endif
|
#endif
|
||||||
QVector<double> cs1(0);
|
|
||||||
|
|
||||||
|
|
||||||
cs.append(0);
|
colorMapLogScale = myColourMap(1);
|
||||||
cs.append((pow(10,2*0.10)-1)/99.0);
|
|
||||||
cs.append((pow(10,2*0.40)-1)/99.0);
|
|
||||||
cs.append((pow(10,2*0.60)-1)/99.0);
|
|
||||||
cs.append((pow(10,2*0.95)-1)/99.0);
|
|
||||||
cs.append(1.);
|
|
||||||
|
|
||||||
colorMapLogScale = myColourMap(cs1);
|
|
||||||
#if QWT_VERSION<0x060000
|
#if QWT_VERSION<0x060000
|
||||||
contourLevelsLinear = new QwtValueList();
|
contourLevelsLinear = new QwtValueList();
|
||||||
for(double level=0.5;level<10.0;level+=1.0 ) (*contourLevelsLinear) += level;
|
for(double level=0.5;level<10.0;level+=1.0 ) (*contourLevelsLinear) += level;
|
||||||
@ -199,19 +185,49 @@ void SlsQt2DPlot::SetZMinMax(double zmin,double zmax){
|
|||||||
|
|
||||||
|
|
||||||
QwtLinearColorMap* SlsQt2DPlot::myColourMap(QVector<double> colourStops) {
|
QwtLinearColorMap* SlsQt2DPlot::myColourMap(QVector<double> colourStops) {
|
||||||
QwtLinearColorMap* copyMap = new QwtLinearColorMap();
|
|
||||||
|
|
||||||
|
int ns=5;
|
||||||
|
|
||||||
copyMap->addColorStop(colourStops.value(0), Qt::white);
|
double r[]={0.00, 0.00, 0.87, 1.00, 0.51};
|
||||||
// copyMap->addColorStop(colourStops.value(0), Qt::darkCyan);
|
double g[]={0.00, 0.81, 1.00, 0.20, 0.00};
|
||||||
copyMap->addColorStop(colourStops.value(1), Qt::cyan);
|
double b[] = { 0.51, 1.00, 0.12, 0.00, 0.00 };
|
||||||
copyMap->addColorStop(colourStops.value(2), Qt::blue);
|
|
||||||
copyMap->addColorStop(colourStops.value(3), Qt::green);
|
QColor c1,c2,c;
|
||||||
copyMap->addColorStop(colourStops.value(4), Qt::yellow);
|
c1.setRgbF(r[0],g[0],b[0]);
|
||||||
copyMap->addColorStop(colourStops.value(5), Qt::red);
|
c2.setRgbF(r[ns-1],g[ns-1],b[ns-1]);
|
||||||
|
QwtLinearColorMap* copyMap = new QwtLinearColorMap(c1, c2);
|
||||||
|
|
||||||
|
for (int is=1; is<ns-1; is++) {
|
||||||
|
c.setRgbF(r[is],g[is],b[is]);
|
||||||
|
copyMap->addColorStop(colourStops.value(is),c );
|
||||||
|
}
|
||||||
|
|
||||||
return copyMap;
|
return copyMap;
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
QwtLinearColorMap* SlsQt2DPlot::myColourMap(int log) {
|
||||||
|
|
||||||
|
int ns=5;
|
||||||
|
|
||||||
|
|
||||||
|
QVector<double> cs1(0);
|
||||||
|
QVector<double> lcs1(0);
|
||||||
|
|
||||||
|
|
||||||
|
cs1.append(0.);
|
||||||
|
cs1.append(0.34);
|
||||||
|
cs1.append(0.61);
|
||||||
|
cs1.append(0.84);
|
||||||
|
cs1.append(1.);
|
||||||
|
if (log) {
|
||||||
|
for (int is=0; is<ns; is++) {
|
||||||
|
lcs1.append((pow(10,2*cs1.value(is))-1)/99.0);
|
||||||
|
}
|
||||||
|
return myColourMap(lcs1);
|
||||||
|
}
|
||||||
|
|
||||||
|
return myColourMap(cs1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -220,26 +236,29 @@ void SlsQt2DPlot::Update(){
|
|||||||
rightAxis->setColorMap(d_spectrogram->data().range(),d_spectrogram->colorMap());
|
rightAxis->setColorMap(d_spectrogram->data().range(),d_spectrogram->colorMap());
|
||||||
#else
|
#else
|
||||||
|
|
||||||
|
// const QwtInterval zInterval = d_spectrogram->data()->interval( Qt::ZAxis );
|
||||||
|
const QwtInterval zInterval = hist->range();
|
||||||
|
|
||||||
QVector<double> colourStops =((QwtLinearColorMap*)d_spectrogram->colorMap())->colorStops();
|
QVector<double> colourStops =((QwtLinearColorMap*)d_spectrogram->colorMap())->colorStops();
|
||||||
QwtLinearColorMap* copyMap = myColourMap(colourStops);
|
QwtLinearColorMap* copyMap = myColourMap(colourStops);
|
||||||
|
|
||||||
// rightAxis->setColorMap(d_spectrogram->data()->interval(Qt::ZAxis),copyMap);
|
rightAxis->setColorMap(zInterval,copyMap);
|
||||||
rightAxis->setColorMap(hist->range(),copyMap);
|
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
if(!zoomer->zoomRectIndex()) UnZoom();
|
if(!zoomer->zoomRectIndex()) UnZoom();
|
||||||
|
|
||||||
#if QWT_VERSION<0x060000
|
#if QWT_VERSION<0x060000
|
||||||
|
|
||||||
|
|
||||||
setAxisScale(QwtPlot::yRight,d_spectrogram->data().range().minValue(),
|
setAxisScale(QwtPlot::yRight,d_spectrogram->data().range().minValue(),
|
||||||
d_spectrogram->data().range().maxValue());
|
d_spectrogram->data().range().maxValue());
|
||||||
#else
|
#else
|
||||||
// setAxisScale(QwtPlot::yRight,d_spectrogram->data()->interval(Qt::ZAxis).minValue(), d_spectrogram->data()->interval(Qt::ZAxis).maxValue());
|
|
||||||
setAxisScale(QwtPlot::yRight,hist->range().minValue(), hist->range().maxValue());
|
|
||||||
|
|
||||||
cout << "min is " << d_spectrogram->data()->interval(Qt::ZAxis).minValue() << " " << hist->range().minValue() << endl;
|
|
||||||
cout << "max is " << d_spectrogram->data()->interval(Qt::ZAxis).maxValue() << " " << hist->range().maxValue() << endl;
|
|
||||||
|
|
||||||
|
setAxisScale(QwtPlot::yRight,zInterval.minValue(), zInterval.maxValue());
|
||||||
|
|
||||||
|
plotLayout()->setAlignCanvasToScales(true);
|
||||||
#endif
|
#endif
|
||||||
replot();
|
replot();
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user