etienne1234
1st June 2016, 09:52
Hi everybody,
I'm having an issue with the last version of Qwt.
I'm receiving data in real time, communicating with a robot and i want to plot dynamcally the data on the fly. So I want my yLeft and xBottom axises to change their values dynamically. If the x coordinate of my new point is inferior to my xBotton axis lower bound, it becomes its new lower bound etc ..
I didn't have trouble to do this in previous versions of Qwt using this sample of code : (x and y being the coordinates of the data i receive in real time )
if(x < myPlot->axisScaleDiv(QwtPlot::xBottom)->lowerBound())
{
if(x < 0)
{
myPlot->setAxisScale(QwtPlot::xBottom,myPlot->axisScaleDiv(QwtPlot::xBottom)->lowerBound()+x-0.02, \
myPlot->axisScaleDiv(QwtPlot::xBottom)->upperBound());
}
else
{
myPlot->setAxisScale(QwtPlot::xBottom,myPlot->axisScaleDiv(QwtPlot::xBottom)->lowerBound()-x-0.02, \
myPlot->axisScaleDiv(QwtPlot::xBottom)->upperBound());
}
}
else if(x > myPlot->axisScaleDiv(QwtPlot::xBottom)->upperBound())
{
myPlot->setAxisScale(QwtPlot::xBottom,myPlot->axisScaleDiv(QwtPlot::xBottom)->lowerBound(), \
myPlot->axisScaleDiv(QwtPlot::xBottom)->upperBound()+x+0.02);
}
if(y < myPlot->axisScaleDiv(QwtPlot::yLeft)->lowerBound())
{
if(y < 0)
{
myPlot->setAxisScale(QwtPlot::yLeft,myPlot->axisScaleDiv(QwtPlot::yLeft)->lowerBound()+y-0.02, \
myPlot->axisScaleDiv(QwtPlot::yLeft)->upperBound());
}
else
{
myPlot->setAxisScale(QwtPlot::yLeft,myPlot->axisScaleDiv(QwtPlot::yLeft)->lowerBound()-y-0.02, \
myPlot->axisScaleDiv(QwtPlot::yLeft)->upperBound());
}
}
else if(y > myPlot->axisScaleDiv(QwtPlot::yLeft)->upperBound())
{
myPlot->setAxisScale(QwtPlot::yLeft,myPlot->axisScaleDiv(QwtPlot::yLeft)->lowerBound(), \
myPlot->axisScaleDiv(QwtPlot::yLeft)->upperBound()+y+0.02);
}
This code worked pretty well, but my problem is that in qwt 6.1.2 you don't access the scale divisions of an axis with a pointer anymore. So this sample of code still works but it lags a lot, and it didn't with pointers.. Is there a simpler way, more memory efficient to do this in qwt 6.1.2 ? Did i miss something with dynamic axises ?
Thanks for your help
I'm having an issue with the last version of Qwt.
I'm receiving data in real time, communicating with a robot and i want to plot dynamcally the data on the fly. So I want my yLeft and xBottom axises to change their values dynamically. If the x coordinate of my new point is inferior to my xBotton axis lower bound, it becomes its new lower bound etc ..
I didn't have trouble to do this in previous versions of Qwt using this sample of code : (x and y being the coordinates of the data i receive in real time )
if(x < myPlot->axisScaleDiv(QwtPlot::xBottom)->lowerBound())
{
if(x < 0)
{
myPlot->setAxisScale(QwtPlot::xBottom,myPlot->axisScaleDiv(QwtPlot::xBottom)->lowerBound()+x-0.02, \
myPlot->axisScaleDiv(QwtPlot::xBottom)->upperBound());
}
else
{
myPlot->setAxisScale(QwtPlot::xBottom,myPlot->axisScaleDiv(QwtPlot::xBottom)->lowerBound()-x-0.02, \
myPlot->axisScaleDiv(QwtPlot::xBottom)->upperBound());
}
}
else if(x > myPlot->axisScaleDiv(QwtPlot::xBottom)->upperBound())
{
myPlot->setAxisScale(QwtPlot::xBottom,myPlot->axisScaleDiv(QwtPlot::xBottom)->lowerBound(), \
myPlot->axisScaleDiv(QwtPlot::xBottom)->upperBound()+x+0.02);
}
if(y < myPlot->axisScaleDiv(QwtPlot::yLeft)->lowerBound())
{
if(y < 0)
{
myPlot->setAxisScale(QwtPlot::yLeft,myPlot->axisScaleDiv(QwtPlot::yLeft)->lowerBound()+y-0.02, \
myPlot->axisScaleDiv(QwtPlot::yLeft)->upperBound());
}
else
{
myPlot->setAxisScale(QwtPlot::yLeft,myPlot->axisScaleDiv(QwtPlot::yLeft)->lowerBound()-y-0.02, \
myPlot->axisScaleDiv(QwtPlot::yLeft)->upperBound());
}
}
else if(y > myPlot->axisScaleDiv(QwtPlot::yLeft)->upperBound())
{
myPlot->setAxisScale(QwtPlot::yLeft,myPlot->axisScaleDiv(QwtPlot::yLeft)->lowerBound(), \
myPlot->axisScaleDiv(QwtPlot::yLeft)->upperBound()+y+0.02);
}
This code worked pretty well, but my problem is that in qwt 6.1.2 you don't access the scale divisions of an axis with a pointer anymore. So this sample of code still works but it lags a lot, and it didn't with pointers.. Is there a simpler way, more memory efficient to do this in qwt 6.1.2 ? Did i miss something with dynamic axises ?
Thanks for your help