QwtPlotSpectrogram: используя логарифмическую цветовую шкалу? - PullRequest
1 голос
/ 12 октября 2011

Я использую QwtPlotSpectrogram с пользовательским QwtRasterData для построения 2D-данных с различными значениями.Я хотел бы построить график с использованием логарифмической цветовой шкалы вместо линейной.Есть ли простой способ сделать это?

Моя альтернатива - подать журнал (значение (x, y)), когда QwtRasterData вычисляет значение.Тем не менее, тогда моя цветная полоса будет показывать значения в журнале, а не абсолютные значения, что я и хочу - есть предложения?

Спасибо!

1 Ответ

2 голосов
/ 26 января 2012

В случае, если это все еще интересно кому-либо:

У меня была такая же проблема, и я написал следующий простой класс:

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())
...