1

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

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

谢谢!

4

1 回答 1

2

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

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

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())
于 2012-01-26T16:47:59.610 回答