Qwt:每十年对数刻度和滴答声

Qwt: log scale and ticks every 10th of a decade

我制作了一个带有 x 对数刻度和 y 线性刻度的 QwtPlot。 x 轴范围固定为 10 到 1000,即 3 个十进制数。 A 添加了一个有主要和次要划分的网格。

问题:次要报价落在一些自动计算的位置。

我想要的是:每十年一次的小刻度(20、30、...、200、300、...)。

我试过试玩,遵循随处可见的各种示例。但是我尝试过的任何事情都没有改变。我确定我错过了 Qwt 文档中的某些内容...

Qwt 版本:6.1.4

我明白了。在 QwtPlot 的子类中:

setAxisAutoScale(QwtPlot::xBottom, false);
xlogScale = new QwtLogScaleEngine();
QwtScaleDiv xDiv = xlogScale->divideScale(10.0, 1000.0, 2, 10, 1.0);
setAxisScaleEngine(QwtPlot::xBottom, xlogScale);
setAxisScaleDiv(QwtPlot::xBottom, xDiv);

关键是第3行,设置x轴刻度。 出于某种原因,我很难理解函数期望的参数:

  • 从 10 到 1000
  • 2个主要步骤
  • 每十年 10 个小步骤
  • 主要步长 = 1 decade

还有,不要打电话给 QwtPlot::setAxisScale()!它会将所有内容重置为默认值。

希望对您有所帮助!