Каковы преимущества / недостатки QCustomPlot по сравнению с Qwt?

Я использую Qwt сейчас в течение двух лет. Мне нравятся его объектно-ориентированные классы, что позволяет очень легко адаптировать сюжеты и функциональность. В эти дни QCustomPlot становится все более популярным и конкурирует с Qwt. Конечно, я сравнивал Аписа. Однако меня интересуют свидетельства опытных пользователей из обеих библиотек. Что удобно? Что нет? Есть ли подводные камни?

4 ответов


Я бы не назвал себя "опытным", так как я использовал Qwt только в течение нескольких месяцев, а QCustomPlot в течение нескольких недель. При этом мои впечатления таковы:

  • QCustomPlot, кажется, более активно развивается в настоящее время. Последний релиз состоялся в августе 2012 года (тогда как последний выпуск Qwt датируется 2011 годом). Субъективно его интерфейс кажется более "выровненным" с Qt framework.
  • Qwt, с другой стороны, кажется более зрелым и характерным. Например, текущий выпуск QCustomPlot не имеет простого способа установить цвет фона для прямоугольника оси (поддерживается только настройка фона для пользовательского pixmap). Другой пример-Qwt имеет специальные классы и методы для облегчения построения и масштабирования кривых с очень большим количеством точек. Я не нашел ничего подобного в QCustomPlot.

EDIT: автор QCustomPlot является в курсе отсутствует функциональность для установки фона сюжета и обещает добавить его в предстоящий выпуск.

есть еще одно важное различие между qcustomplot и Qwt-лицензированием. - Qwt-это LGPL, поэтому вы можете связать его с проектом, отличным от GPL. QCustomPlot это GPL v. 3, и что многие люди (включая меня) считают слишком строгими. Автор QCustomPlot приглашает связаться с ним, если вы хотите лицензию LGPL.

EDIT2 (25 марта 2013): новые выпуски ветвей Qwt 5.* и 6.* появился в ноябре, который аннулирует" более активно развитое " преимущество QCustomplot


Я не могу сравнить обе библиотеки, так как я использую только QCustomPlot (в течение года), но я считаю, что мой комментарий может быть полезен другим.

плюсы QCustomPlot:

  • публично доступен на Gitorious,
  • Живая пользовательская база, готовая помочь (включая самого автора),
  • открытость для лицензирования LGPL (в обмен на пожертвование, в моем случае),
  • очень чистый и лаконичный интерфейс,
  • очень легко найти ошибку, если она присутствует (мои исправления редко были длиннее одной строки)
  • легко расширить;
  • очень взломать в то, что вы хотели бы разбить из декартовой библиотеки заговора,
  • хорошая документация,
  • доступный в сконденсированной форме 1 .ч и одна .cpp файл-удобный для быстрой интеграции или специально построенных один-widgeters,
  • очень хорошая работа (во всех моих случаях),
  • это очевидно, что автор любит хороший код и может его создать,
  • очень хорошо продуманная дорожная карта(на долгое время).

минусы QCustomPlot:

  • очень строго декартовой (читай: нет круговых диаграмм),
  • в моем случае потребовалось некоторое время, чтобы получить необходимое понимание всех важных вещей (если кто-то любит реализовывать расширения сопоставимого качества с основой),
  • возможно, немного медленная эволюция (как многие другой-занят - проекты man),
  • используется только в основном потоке (i. e. когда вам нужно генерировать изображения, скажем, на многопоточном веб-сервере, вам нужно запустить эту библиотеку в основном потоке, что бы это ни значило для вашей реализации).

Если требуется лицензия LGPL-ish, может не быть бесплатного варианта (зависит от рассмотрения автора). Учитывая качество и удобство использования библиотеки, пожертвование моя компания дала в обмен для LGPL лицензионное соглашение не было излишним.


при построении графика много точек. и пользователь сконцентрировать точку на весь сюжет. ie (ось x, y полностью покрыта пикселями)

(количество очков = приведено ниже расчета)

при перетаскивании сюжет:

  • Qwt дать путь намного лучшая производительность над QCustomPlot.
  • QCustomPlot перетащить/себя перепланировку лаги способом больше чем Qwt, и это плохо для пользовательского интерфейса.
  • задержка Qwt игнорируется и допустимый.
  • Qwt требует меньше обработки.

Что я заметил: при перетаскивании Qwt перетаскивает только область участка,а после ее удаления рисует область. а QCustomPlot пытаются replot прежде чем упасть. (обратите внимание, что это может помочь парням QCustomPlot сделать его лучше.)


кроме того, Qwt предоставляет параметр необработанного буфера, которым можно управлять извне. я смог уменьшить (QcustomPlot)150Mb до меньше, чем (Qwt по)40МБ. сохранение,

QCustomPlot заставить пользователя, чтобы выделить память для оси X (errorbar+ , errorbar-), оси Y (errorbar+, errorbar-) (2 * 2 * sizeof (double)) память теряется из 3 * 2 * sizeof (double) ie 32byte из 48byte является отходом (для 1sample), где только Qwt требуется 16byte для одного образца (для x и y).

afai понять, errorbar может быть достигнуто в Qwt также

  • равное количество пунктов (96kilosamples / sec * буферизация 10second = 96 * 1000 * 10 = ~1M)
  • отключение сглаживания в QCustomPlot и включено в Qwt по
  • же re-построение алгоритма. (примите данные на таком же интервале времени от прибора и пожара replot потом)

даже после включения сглаживания, Qwt был намного лучше в производительности.


Примечания:

  • Qwt является зрелым, эффективным.
  • QCustomPLot дает лучший внешний вид. (немного лучше, чем Qwt по.)

Qwt можно сделать гораздо более привлекательным сразу после изменения фона на белый, сглаженный включен и сетки

проверено на:

  • Qwt 6.1.0 скомпилирован для Qt5
  • QCustomPLot 1.2.1 собрали для Qt5
  • Qt5.2.1
  • Linux localhost.локального домена 3.13.11-100.fc19.архитектуру x86_64 #1 СМП Ср 23 апр 20:10:57 мирового архитектуру x86_64 архитектуру x86_64 x86_64 с 2014 GNU/Линукс
  • процессором i3-3120M процессор @ 2.50 ГГц X 4

кроме того, qcustomplot peform то же самое на Qt4.

Это мой вывод и может варьироваться от условий к условиям.

У меня есть переключатель обратно в Qwt. надеюсь, это поможет другим в выборе. :)


минор:

  • Con QCustomPLot требует отдельного файла qmake для загрузки. (разочарование для начала)
  • Con Qwt имеет несколько файлов для компиляции.
  • Pro QCUstomPlot имеет только два файла : источник и заголовок
  • Con ни один канал не имеет IRC-канала (по крайней мере, не на Freenode)
  • Con QCustomPlot имеет несколько примеров, помещенных в один исполняемый файл.
  • Pro Qwt имеет много примеров, распределенных по многим исполняемым файлам
  • Con QCustomPlot не имеет плагина QtCreator
  • Con QCustomPlot недоступен в репо (по крайней мере, не на Fedora 19)
  • Pro Qwt имеет много других вкусностей
  • Con Qwt громоздкий : p
  • Pro Qwt поддержка CMake
  • Pro Qwt намного более гибкий (afaif)

пожалуйста, поправьте меня, если я ошибаюсь в некоторых пунктах.


плюсы:

  • легко начать работу IMO (API интуитивно понятен и хорошо документирован)
  • хорошее качество сюжета и быстрая реакция при панорамировании и масштабировании.
  • один .ч./cpp-файл (т. е. нет необходимости ссылаться на скомпилированные библиотеки, отличные от QTs)

плюсы:

  • GPL (не LGPL)
  • внутренне использует структуру данных, которая хранит 6 doubleS для каждой точки данных, даже если вам нужно только X и Y
  • внутренне он использует QMap для хранения точек данных и их сортировки. Очень эффективно для панорамирования и масштабирования, но очень медленно заполняется, когда количество выборок велико (например, 1,000,000 точек данных)