【问题标题】:QwtPlotSpectrogram: using a logarithmic color scale?QwtPlotSpectrogram:使用对数色标?
【发布时间】:2023-04-02 00:44:01
【问题描述】:

我正在使用带有自定义 QwtRasterData 的 QwtPlotSpectrogram 来绘制具有广泛变化值的 2D 数据。我想使用对数色标而不是线性色标进行绘图。有没有简单的方法可以做到这一点?

我的替代方法是在 QwtRasterData 计算值时提供 log(value(x,y))。但是,然后我的颜色条将显示日志中的值,而不是我想要的绝对值 - 那里有什么建议吗?

谢谢!

【问题讨论】:

    标签: qt graphing qwt


    【解决方案1】:

    如果这对任何人来说仍然很有趣:

    我遇到了同样的问题,写了以下简单的类:

    class LogarithmicColorMap : public QwtLinearColorMap
    {
    public:
        LogarithmicColorMap(const QColor &from, const QColor &to)
            : QwtLinearColorMap(from, to)
        {
        }
    
        QRgb rgb(const QwtInterval &interval, double value) const
        {
            return QwtLinearColorMap::rgb(QwtInterval(std::log(interval.minValue()),
                                                      std::log(interval.maxValue())),
                                          std::log(value));
        }
    };
    

    对于彩条,您可以使用以下内容:

    setAxisScaleEngine(QwtPlot::yRight, new QwtLog10ScaleEngine())
    

    【讨论】:

      猜你喜欢
      • 2019-12-12
      • 1970-01-01
      • 2019-06-04
      • 1970-01-01
      • 2018-10-27
      • 1970-01-01
      • 1970-01-01
      • 2014-12-18
      • 2011-08-10
      相关资源
      最近更新 更多