mirror of
https://github.com/slsdetectorgroup/slsDetectorPackage.git
synced 2025-05-05 20:30:03 +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);}
|
||||
#else
|
||||
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
|
||||
|
||||
|
||||
@ -110,6 +122,12 @@ class SlsQt2DHist: public QwtRasterData{
|
||||
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);
|
||||
//horazontal extrap
|
||||
|
||||
|
||||
|
||||
return 0.5;
|
||||
|
||||
|
||||
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);
|
||||
}
|
||||
|
@ -52,6 +52,7 @@ private:
|
||||
void SetupColorMap();
|
||||
|
||||
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){
|
||||
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();}
|
||||
|
@ -60,6 +60,8 @@ void SlsQt2DHist::SetData(int nbinsx, double xmin, double xmax, int nbinsy,doubl
|
||||
#else
|
||||
setInterval( Qt::XAxis,QwtInterval(xmin,xmax));
|
||||
setInterval( Qt::YAxis,QwtInterval(ymin,ymax));
|
||||
// setInterval( Qt::ZAxis,QwtInterval(zmin,zmax));
|
||||
//setInterval( Qt::ZAxis,QwtInterval(0.,1.));
|
||||
#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_max>0) z_max*=1.02; else z_max/=1.02;
|
||||
}
|
||||
setInterval( Qt::ZAxis,QwtInterval(z_min,z_max));
|
||||
}
|
||||
|
||||
double SlsQt2DHist::GetMean(){
|
||||
|
@ -55,34 +55,20 @@ SlsQt2DPlot::SlsQt2DPlot(QWidget *parent):QwtPlot(parent){
|
||||
}
|
||||
|
||||
|
||||
void SlsQt2DPlot::SetupColorMap(){
|
||||
QVector<double> cs(0);
|
||||
void SlsQt2DPlot::SetupColorMap(){
|
||||
|
||||
|
||||
|
||||
|
||||
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
|
||||
d_spectrogram->setColorMap(*colorMapLinearScale);
|
||||
#else
|
||||
d_spectrogram->setColorMap(colorMapLinearScale);
|
||||
#endif
|
||||
QVector<double> cs1(0);
|
||||
|
||||
|
||||
cs.append(0);
|
||||
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);
|
||||
colorMapLogScale = myColourMap(1);
|
||||
#if QWT_VERSION<0x060000
|
||||
contourLevelsLinear = new QwtValueList();
|
||||
for(double level=0.5;level<10.0;level+=1.0 ) (*contourLevelsLinear) += level;
|
||||
@ -198,21 +184,51 @@ void SlsQt2DPlot::SetZMinMax(double zmin,double zmax){
|
||||
}
|
||||
|
||||
|
||||
QwtLinearColorMap* SlsQt2DPlot::myColourMap(QVector<double> colourStops) {
|
||||
QwtLinearColorMap* copyMap = new QwtLinearColorMap();
|
||||
QwtLinearColorMap* SlsQt2DPlot::myColourMap(QVector<double> colourStops) {
|
||||
|
||||
int ns=5;
|
||||
|
||||
double r[]={0.00, 0.00, 0.87, 1.00, 0.51};
|
||||
double g[]={0.00, 0.81, 1.00, 0.20, 0.00};
|
||||
double b[] = { 0.51, 1.00, 0.12, 0.00, 0.00 };
|
||||
|
||||
|
||||
copyMap->addColorStop(colourStops.value(0), Qt::white);
|
||||
// copyMap->addColorStop(colourStops.value(0), Qt::darkCyan);
|
||||
copyMap->addColorStop(colourStops.value(1), Qt::cyan);
|
||||
copyMap->addColorStop(colourStops.value(2), Qt::blue);
|
||||
copyMap->addColorStop(colourStops.value(3), Qt::green);
|
||||
copyMap->addColorStop(colourStops.value(4), Qt::yellow);
|
||||
copyMap->addColorStop(colourStops.value(5), Qt::red);
|
||||
QColor c1,c2,c;
|
||||
c1.setRgbF(r[0],g[0],b[0]);
|
||||
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);
|
||||
}
|
||||
|
||||
|
||||
void SlsQt2DPlot::Update(){
|
||||
@ -220,26 +236,29 @@ void SlsQt2DPlot::Update(){
|
||||
rightAxis->setColorMap(d_spectrogram->data().range(),d_spectrogram->colorMap());
|
||||
#else
|
||||
|
||||
// const QwtInterval zInterval = d_spectrogram->data()->interval( Qt::ZAxis );
|
||||
const QwtInterval zInterval = hist->range();
|
||||
|
||||
QVector<double> colourStops =((QwtLinearColorMap*)d_spectrogram->colorMap())->colorStops();
|
||||
QwtLinearColorMap* copyMap = myColourMap(colourStops);
|
||||
|
||||
// rightAxis->setColorMap(d_spectrogram->data()->interval(Qt::ZAxis),copyMap);
|
||||
rightAxis->setColorMap(hist->range(),copyMap);
|
||||
rightAxis->setColorMap(zInterval,copyMap);
|
||||
|
||||
#endif
|
||||
|
||||
if(!zoomer->zoomRectIndex()) UnZoom();
|
||||
|
||||
#if QWT_VERSION<0x060000
|
||||
|
||||
|
||||
setAxisScale(QwtPlot::yRight,d_spectrogram->data().range().minValue(),
|
||||
d_spectrogram->data().range().maxValue());
|
||||
#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;
|
||||
#else
|
||||
|
||||
|
||||
setAxisScale(QwtPlot::yRight,zInterval.minValue(), zInterval.maxValue());
|
||||
|
||||
plotLayout()->setAlignCanvasToScales(true);
|
||||
#endif
|
||||
replot();
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user