Qwt 关闭轴标签的科学记数法

Posted

技术标签:

【中文标题】Qwt 关闭轴标签的科学记数法【英文标题】:Qwt turn off scientific notation for axis labels 【发布时间】:2015-09-24 12:13:33 【问题描述】:

默认情况下,Qwt 在轴上以科学计数法显示大数字:

对于我的应用程序,我真的很想将其关闭或重新格式化标签。查看class documentation,似乎没有任何QwtScale 类有此选项。这种行为可以通过派生一个新类来实现吗?如果是这样,它应该从哪个类派生,哪些成员需要重载?

【问题讨论】:

看看这个帖子***.com/questions/18587571/…你可以像我一样覆盖缩放绘制类。 针对您的特殊情况的附加注释,在您自己的派生 QwtScaleDraw 类中覆盖 QwtScaleDraw::label(double) 就足够了。 @bkausbk 你的回答实际上帮助我解决了几个问题,我希望我可以为每个问题投票一次! 【参考方案1】:

感谢 bkausbk,我能够想出这个修改后的QwtScaleDraw

class QScaleDraw : public QwtScaleDraw

public:

    explicit QScaleDraw(bool enableScientificNotation = false)
    : m_scientificNotationEnabled(enableScientificNotation)
    

    

    virtual QwtText label(double value) const override
    
        if (m_scientificNotationEnabled)
        
            return QwtScaleDraw::label(value);
         
        else
        
            return QwtText(QString::number(value, 'f', 0));
        
    

private:

    bool    m_scientificNotationEnabled;                                                

;

然后要使用它,您可以执行以下操作:

QwtPlot myplot;
myplot->setAxisScaleDraw(xBottom, new QScaleDraw);

结果

【讨论】:

好答案从“virtual QwtText label(double value) const override;”中删除分号虽然

以上是关于Qwt 关闭轴标签的科学记数法的主要内容,如果未能解决你的问题,请参考以下文章

将 y 轴标签格式化为具有许多零的更高千位科学记数法?

Qwt:将日期/时间标签文本在底部轴上对齐

如何格式化双对数 x 轴刻度标签以显示为 10 的幂?

如何让 Gnuplot 不裁剪科学记数法

在 QWT Plot 中更改轴刻度和标签以在毫米和英寸之间切换

如何防止matplotlib中轴偏移的科学记数法?