2011-10-18 40 views
4

2つの水平軸を持つプロットを作成したいと思います。下軸は線形で、上軸は非線形です。私は変換のためのデータのテーブルを持っています "ボトム値 - >トップ値"。私はQwtScaleEngineがこの機能を提供することを知りました。しかし、QwtScaleEngineとQwtScaleDivのサブクラスで定義する関数が多すぎるため、文書化された関数が多すぎるため、これを機能させることはできません。QwtPlotカスタム軸

提案がありますか?

答えて

1

軸を共有する2つのプロットを2つの水平軸で効果的に重ねるか、最初の水平軸の追加表現(別の単位など)を追加するだけですか?それは関連性のあるものではないかもしれませんが、私はあなたの問題を理解しようとしています。

まず、QwtPlot::updateAxes() documentationをご覧ください。 Qwtの公式文書では、プロットとスケールエンジンとスケール区分との関係について私が見出した最も良い記述です。私はQwtがひどく文書化されているとは思わないが、私はそれが概念の高水準の記述が不足していると思う。

QwtScaleDiv私は、軸の境界と潜在的にティック値を含むコンテナタイプの詳細を参照してください。 QwtScaleDivをサブクラス化する必要があることがわかりません。

この変換にはQwtScaleEngineが含まれていますが、少なくともQwt 6.1.0ではもう少し詳細があります。 QwtScaleEngineは、setTransformation()の変換コンセプト(QwtTransform)をサポートしています。変換が対数、指数関数、二次関数、三次関数などの単純な数学関数の場合は、QwtPowerTransformまたはQwtLogTransformを使用できるはずです。これらが該当しない場合は、独自のQwtTransformを実装してQwtScaleEngineに割り当てることができます。私が知る限り、変換は双方向でなければならず、つまりtransforminvTransformの両方を実装することを意味します。私の経験では、グリッドラインやゾーンなど、スケールエンジンが関連付けられている軸に関連するすべてのプロットアイテムの値も変換する必要があります。私はデフォルトのQwtLinearScaleEngineよりも他のスケールエンジンの変換を試しませんでしたが、すばらしいです。それは強力な概念です。また、SVN playground(6.1.0)のscaleengineの例を見てください。

関連する問題