2011-10-12 64 views
0

我正在使用QwtPlotSpectrogram與自定義的QwtRasterData來繪製具有廣泛變化的值的2D數據。我想用對數色標來代替線性色標。有沒有簡單的方法來做到這一點?QwtPlotSpectrogram:使用對數色階?

我的替代方法是在QwtRasterData計算值時提供日誌(值(x,y))。然而,那麼我的顏色欄將顯示日誌中的值,而不是我想要的絕對值 - 有什麼建議嗎?

謝謝!

回答

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