void MainWindow::plotData() { // Get shared access (read only). boost::shared_ptr < boost::shared_mutex > mutexX = _xData->getMutex(); boost::shared_lock < boost::shared_mutex > lockX (*mutexX.get()); boost::shared_ptr < boost::shared_mutex > mutexY = _yData->getMutex(); boost::shared_lock < boost::shared_mutex > lockY (*mutexY.get()); _xMin = std::numeric_limits<double>::max(); _yMin = std::numeric_limits<double>::max(); _xMax = std::numeric_limits<double>::min(); _yMax = std::numeric_limits<double>::min(); for(int n = 0; n < _xData->getData().size(); ++n) { _xMin = qMin(_xMin, _xData->getData()[n]); _xMax = qMax(_xMax, _xData->getData()[n]); _yMin = qMin(_yMin, _yData->getData()[n]); _yMax = qMax(_yMax, _yData->getData()[n]); } _yMax = pow(10, ceil(log10(_yMax))); // give the axes some labels: ui->customPlot->graph(0)->setData(_xData->getData(), _yData->getData()); // set axes ranges, so we see all data: ui->customPlot->xAxis->setRange(_xMin, _xMax); ui->customPlot->yAxis->setRange(_yMin, _yMax); ui->customPlot->replot(); }
AxisLock::AxisLock(bool x, bool y, bool z) : lock_x(false), lock_y(false), lock_z(false) { if(x) lockX(0); if(y) lockY(0); if(z) lockZ(0); }