我正在使用带有自定义QwtRasterData的QwtPlotSpectrogram来绘制具有广泛变化值的2D数据。我想使用对数色标而不是线性色标。有一种简单的方法可以做到这一点吗?
我的替代方法是在QwtRasterData计算值时提供log(value(x,y))。但是,我的颜色条会显示日志中的值,而不是我想要的绝对值 - 那里有任何建议吗?
谢谢!
答案 0 :(得分: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())