我实施了一个QwtPlot
,当实时添加数据时,它会在屏幕上滚动。根据用户输入,有时会使用QwtPlotRenderer
将绘图图像渲染到文件中。但是,由于轴在正常操作期间滚动,QwtScaleDiv
刻度标记在渲染时看起来有点不稳定(它们是右对齐的):
是否有一些简单的方法可以在渲染之前重新计算除法,以便第一个标签位于最左侧,最后一个标签位于最右侧?
答案 0 :(得分:0)
这并不像它最初看到的那样困难。基本上,您需要做的就是暂时替换axisScaleDiv
。
auto divX = this->axisScaleDiv(xBottom);
double ub = divX.upperBound();
double lb = divX.lowerBound();
double numTicks = 11.0; // 10 even divisions
// you can create minor/medium ticks if you want to, I didn't.
QList<double> majorTicks;
for (int i = 0; i < numTicks; ++i)
{
majorTicks.push_back(lb + i * ((ub - lb) / (numTicks - 1)));
}
// set the scale to the newly created division
QwtScaleDiv renderDivX(divX.lowerBound(), divX.upperBound(),
QList<double>(), QList<double>(), majorTicks);
this->setAxisScaleDiv(xBottom, renderDivX);
// DO PLOT RENDERING
QwtPlotRender renderer;
renderer.renderDocument(...);
// RESOTRE PREVIOUS STATE
this->setAxisScaleDiv(xBottom, divX);
this->setAxisScaleDiv(yLeft, divY);
// update the axes
this->updateAxes();