web-dev-qa-db-ja.com

Qwtと比較したQCustomPlotの長所/短所は何ですか?

私は現在Qwtを2年間使用しています。私はそのオブジェクト指向クラスが好きです。それはプロットと機能を非常に簡単に適応させることができます。最近、QCustomPlotはますます人気が高まっており、Qwtと競合しています。もちろん、私はAPIを比較しました。しかし、私は両方の図書館からの経験豊富なユーザーの証言に興味があります。何が便利ですか?どうですか?落とし穴はありますか?

17
c_k

Qwtを数か月間、QCustomPlotを数週間使用したので、自分を「経験豊富」とは呼びません。そうは言っても、私の印象は次のとおりです。

  • QCustomPlotは現在より積極的に開発されているようです。最後のリリースは2012年8月でした(Qwtの最後のリリースは2011年にさかのぼります)。主観的には、そのインターフェースはQtフレームワークとより「整合」しているように見えます。
  • 一方、Qwtは、より成熟していて機能的であるように見えます。たとえば、QCustomPlotの現在のリリースには、軸の長方形の色の背景を設定する簡単な方法がありません(背景をユーザー指定のピックスマップに設定することのみがサポートされています)。別の例-Qwtには、非常に多くのポイントを持つ曲線のプロットとズームインを容易にする特別なクラスとメソッドがあります。 QCustomPlotでそのようなものは見つかりませんでした。

編集:QCustomPlotの作者は 認識 プロットの背景を設定するための機能が不足しており、次のリリースでそれを追加することを約束します。

QCustomPlotとQwtの間にはもう1つの重要な違いがあります-ライセンス。 --QwtはLGPLであるため、非GPLプロジェクトにリンクできます。 QCustomPlotはGPLv.3であり、多くの人(私自身を含む)はWAYが制限的すぎると感じています。 QCustomPlotの作成者は、LGPLライセンスが必要な場合は、彼に連絡することを勧めます。

EDIT2(2013年3月25日):Qwtブランチ5. *および6. *の新しいリリースが11月に登場し、QCustomplotの「より積極的に開発された」利点が無効になりました。

13

QCustomPlotのみを使用しているため(現在1年間)、両方のライブラリを比較することはできませんが、それでも私のコメントは他の人にも役立つと思います。

QCustomPlotの長所

  • Gitoriousで公に利用可能、
  • 喜んで手伝ってくれる生きているユーザーベース(著者自身を含む)、
  • LGPLライセンスへの開放性(私の場合、寄付と引き換えに)、
  • 非常にクリーンで簡潔なインターフェース、
  • バグが存在する場合、それを見つけるのは非常に簡単です(私のバグ修正が1行より長くなることはめったにありません)
  • 拡張が簡単。
  • デカルトプロットライブラリからスマッシュしたいものに非常にハッキング可能、
  • 良いドキュメント、
  • 1つの.hファイルと1つの.cppファイルの要約形式で利用可能-迅速な統合または専用の1つのウィジェットに便利です。
  • 非常に優れたパフォーマンス(私のすべてのユースケースで)、
  • 作者がNiceコードが好きで、それを作成できることは明らかです。
  • 非常によく考えられたロードマップ(これから長い間)。

QCustomPlotの短所

  • 非常に厳密にデカルト座標(読み取り:円グラフなし)、
  • 私の場合、重要なすべてのものを把握するのに少し時間がかかりました(基本に匹敵する品質の拡張を実装したい場合)、
  • 多分少し遅い進化(他の多くのものと同じように-忙しい-人のプロジェクト)、
  • メインスレッドでのみ使用できます(つまり、マルチスレッドWebサーバーで画像を生成する必要がある場合は、実装にとって意味があるものは何でも、このライブラリをメインスレッドで実行する必要があります)。

LGPL風のライセンスが必要な場合、無料のオプションがない場合があります(作成者の考慮事項によって異なります)。ライブラリの品質と使いやすさを考えると、LGPLライセンス契約と引き換えに私の会社が行った寄付は不当ではありませんでした。

8
Pavel

たくさんのポイントをプロットするとき。そしてユーザーはポイントをプロット全体に集中させます。すなわち(x、y軸は完全にピクセルで覆われています)

(ポイント数=以下の計算で与えられます)

プロットをドラッグしている間:

  • Qwtはway QCustomPlotよりもはるかに優れたパフォーマンスを提供します。
  • QCustomPlotのドラッグ/再プロットはQwtよりもはるかに多く遅れており、UIにとっては悪いことです。
  • Qwtラグは無視でき、許容範囲内です。
  • Qwtはより少ない処理を必要とします。

私が気付いたのは、ドラッグ中、Qwtはプロット領域のみをドラッグし、ドロップした後、その領域に描画することです。一方、QCustomPlotは、ドロップする前に再プロットを試みます。 (確かに注意してください、しかしこれはQCustomPlotの人がそれをより良くするのを助けるかもしれません。)


また、Qwtは、外部で管理できるrawバッファーオプションを提供します。 (QcustomPlot)150Mbを(Qwt)40Mb未満に減らすことができました。維持、

QCustomPlotは、ユーザーにメモリをX軸(errorbar +、errorbar-)、y軸(errorbar +、errorbar-)に割り当てるように強制します(2 * 2 * sizeof(double))メモリは3 * 2 * sizeof(double)、つまり32バイトから無駄になります48バイトのは無駄(1サンプルの場合)ですが、Qwtだけが1つのサンプル(xおよびyの場合)に16バイトを必要としました。

afaiは理解しています、エラーバーはQwtでも達成できます

  • 同数のポイント(96KiloSamples /秒* 10秒のバッファリング= 96 * 1000 * 10 = 〜1M)
  • QCustomPlotではアンチエイリアシングが無効になり、Qwtではenabled
  • 同じ再プロットアルゴリズム。 (デバイスから同じ時間間隔でデータを取得し、後で再プロットを実行します)

アンチエイリアスを有効にした後でも、Qwtのパフォーマンスははるかに優れていました。


ノート:

  • Qwtは成熟していて効率的です。
  • QCustomPLotにより、ルックアンドフィールが向上します。 (Qwtよりわずかに優れています。)

Qwtは、背景を白、アンチエイリアスが有効、グリッドに変更した直後に、はるかに見栄えが良くなります。

テスト済み:

  • Qt5用にコンパイルされたQwt6.1.0
  • Qt5用にコンパイルされたQCustomPLot1.2.1
  • Qt5.2.1
  • Linux localhost.localdomain 3.13.11-100.fc19.x86_64#1 SMP Wed Apr 23 20:10:57 UTC 2014 x86_64 x86_64 x86_64 GNU/Linux
  • i3-3120M CPU @ 2.50GHz x 4

また、QCustomPlotはQt4でも同じように動作します。

これらは私の発見であり、条件ごとに異なる場合があります。

qwtに切り替えました。これが他の人の選択に役立つことを願っています。 :)


マイナー:

  • Con QCustomPLotでは、個別のqmakeファイルをダウンロードする必要があります。 (初心者にとってはイライラする)
  • Con Qwtには、コンパイルするファイルが複数あります。
  • Pro QCUstomPlotには、ソースとヘッダーの2つのファイルしかありません。
  • ConどちらのチャネルにもIRCチャネルがありません(少なくともFreenodeにはありません)
  • Con QCustomPlotには、1つの実行可能ファイルにプッシュされた複数の例があります。
  • Pro Qwtには、多くの実行可能ファイルに分散された多くの例があります
  • ConQCustomPlotにはQtCreatorプラグインがありません
  • Con QCustomPlotはリポジトリでは利用できません(少なくともFedora 19では利用できません)
  • ProQwtには他にもたくさんのグッズがあります
  • Con Qwtはかさばる:p
  • ProQwtはCMakeをサポートしています
  • Pro Qwtははるかに柔軟です(afaif)

いくつかの点で間違っている場合は私を訂正してください。

8

長所:

  • 簡単に開始できるIMO(APIは直感的で、十分に文書化されています)
  • パンおよびズーム時の良好なプロット品質と高速応答。
  • 単一の.h/.cppファイル(つまり、QT以外のコンパイル済みライブラリを参照する必要はありません)

短所:

  • GPL(LGPLではない)
  • doubleXのみが必要な場合でも、データポイントごとに6つのYsを格納するデータ構造を内部的に使用します
  • 内部的には、QMapを使用してデータポイントを保存し、並べ替えたままにします。パンとズームには非常に効率的ですが、サンプル数が多い場合(1,000,000データポイントなど)、データの入力に非常に時間がかかります。
4
Darien Pardinas