gnuplot против Matplotlib

Я начал рисовать проекты Tomcat с помощью gnuplot-py , в частности, сопоставляя конкретные запросы с распределением памяти и сборкой мусора. Какова общая мудрость gnuplot-py против Matplotlib для графического отображения Python. Есть ли лучшие библиотеки графического оформления, о которых я не слышал?

Мои общие соображения:

  • В то время как gnuplot имеет большие объемы документации, gnuplot-py нет. Насколько хороши сообщества документации для Matplotlib?
  • Есть вещи, которые gnuplot может сделать, но gnuplot-py не может?
  • У Matplotlib есть лучшая поддержка Python?
  • Есть ли большие остановки остановки ошибок в обоих? Раздражали?
  • В настоящее время gnuplot отображает 100 000 точек, я планирую увеличить его до миллионов. Должны ли я ожидать проблем? Насколько хорошо работает Matplotlib?
  • Простота использования, время обработки для gnuplot против Matplotlib?
  • Насколько легко было бы переносить существующий код gnuplot-py на Matplotlib?

Как вы подходите к этой задаче?

  • Вы можете сами проверить документацию matplotlib . Я нахожу это достаточно полным.
  • У меня очень мало опыта с gnuplot-py, поэтому я не могу сказать, может ли он делать все gnuplot.
  • Matplotlib написан и разработан специально для Python, поэтому он очень хорошо подходит с идиомами Python и т. Д.
  • Matplotlib – зрелый проект. NASA использует его для некоторых вещей.
  • Я заработал десятки миллионов очков в Matplotlib, и он все еще выглядел красивым и быстро реагировал.
  • Помимо объектно-ориентированного способа использования Matplotlib – интерфейс pylab, который делает проецирование так же просто, как и в MATLAB – это очень просто.
  • Что касается переноса из gnuplot-py в matplotlib, я понятия не имею.

Matplotlib = простота использования, Gnuplot = производительность

Я знаю, что эта почта старая и ответила, но я проходил мимо и хотел поставить свои два цента. Вот мой вывод: как сказано выше, если у вас есть не очень большой набор данных, вы должны использовать Matplotlib. Это проще и выглядит лучше. Однако, если вам нужна производительность, я бы рекомендовал использовать Gnuplot. Следующий график представляет собой требуемое время для построения и сохранения случайных диаграмм рассеяния, и оно самоочевидно.

Gnuplot VS Matplotlib

Более того, как указано в комментариях, вы можете получить эквивалентное качество сюжетов. Но вам придется попотеть, чтобы сделать это с Гнуплотом.

matplotlib имеет довольно хорошую документацию и, похоже, довольно стабилен. Графики, которые он производит, прекрасны – «качество публикации» наверняка. Из-за хорошей документации и объема кода примера, доступного в Интернете, его легко изучить и использовать, и я не думаю, что у вас будет много проблем с переводом кода gnuplot на него. В конце концов, matplotlib используется учеными для составления данных и подготовки отчетов, поэтому он включает все, что нужно.

Одним из отличительных преимуществ matplotlib является то, что вы можете интегрировать его с графическими интерфейсами Python (по крайней мере, с wxPython и PyQt ) и создать графическое приложение с красивыми графиками.

После использования GNUplot (с моей собственной оболочкой Python) в течение длительного времени (и на самом деле не нравится 80s-выглядящий вывод), я просто начал смотреть на matplotlib. Я должен сказать, что мне это очень нравится, результат выглядит очень красиво, а документы высокого качества и обширные (хотя это также касается GNUplot). Единственное, что я потратил на поиск в документах matplotlib, – это то, как писать в файл изображения, а не на экран! К счастью, эта страница объясняет это довольно хорошо: http://www.dalkescientific.com/writings/diary/archive/2005/04/23/matplotlib_without_gui.html

Я играл с обоими, и мне нравится Matplotlib гораздо лучше с точки зрения интеграции Python, опций и качества графиков / графиков.

Что Gnuplot может сделать Gnuplot-Py может тоже. Потому что Gnuplot можно управлять с помощью pipe (pgnuplot). Gnuplot-Py – всего лишь тонкий слой. Поэтому вам не нужно беспокоиться об этом.

Почему я предпочитаю gnuplot, может быть, множество выходных форматов (PDF, PS и LaTex), что очень полезно в документах, а выход по умолчанию выглядит более научным? 🙂

О производительности и построении большого количества точек: я сравнил это для диаграммы рассеяния 500 000 точек, загруженных из текстового файла и сохраненных в png, используя gnuplot * и matplotlib.

 500.000 points scatterplot gnuplot: 5.171 s matplotlib: 230.693 s 

Я запускал его только один раз, и результаты не выглядели одинаково, но я думаю, что идея понятна: gnuplot выигрывает при производительности.

* Я использовал gnuplot непосредственно, потому что демон gnuplotpy не работает из коробки для меня. Matplotlib выигрывает при интеграции Python.