CITKIT.ru - свободные мысли о свободном софте
Деловая газета CitCity.ru Библиотека CITForum.ru Форумы Курилка
Каталог софта Движение Open Source Дискуссионный клуб Дистрибутивы Окружение Приложения Заметки Разное
28.11.2021

Последние комментарии

ОСТОРОЖНО: ВИНДОФИЛИЯ! (2250)
24 December, 22:53
Kubuntu Feisty (15)
24 December, 18:42
Один на один с Windows XP (3758)
24 December, 11:46

Каталог софта

Desktop
Internet
Internet-серверы
Безопасность
Бизнес/Офис
Игры
Мультимедиа
Наука
Операционные системы
Программирование
СУБД
Создание веб-сайтов
Утилиты

Статьи

Дискуссионный клуб
Linux в школе
Open Source и деньги
Open Source и жизнь
Windows vs Linux
Копирайт
Кто такие анонимусы
Лицензии
Нетбуки
Нужен ли русский Linux?
Пользователи
Дистрибутивы
Идеология
Выбор дистрибутива
Archlinux & CRUX
Debian
Fedora
Gentoo
LFS
LiveCD
Mandriva
OpenSolaris
Slackware
Zenwalk
Другие линуксы
BSD
MINIX
Движение Open Source
История
Классика жанра
Окружение
shell
Библиотеки UI
Графические среды
Шрифты
Приложения
Безопасность
Управление пакетами
Разное
Linuxformat. Колонки Алексея Федорчука
Заметки
Блогометки
Файловые системы
Заметки о ядре

Заметки :: Блогометки :: Приложения

Сравнение 9 программ для построения графиков

http://sovety.blogspot.com/2007/10/9.html

Материал распространяется на условиях Creative Commons Attribution-Noncommercial-Share Alike 3.0 Unported License.

Как известно, среди пользователей GNU/Linux довольно много людей из академической среды, то есть тех людей, которые наблюдают, измеряют, вычисляют, сравнивают и пишут в конечном итоге научные статьи. Эта работа обычно сопряжена с графическим представлением информации, или визуализацией. В простонародье — построением графиков. Именно о программах, для этого предназначенных, и пойдёт речь.

Я сравнил 9 свободных программ для визуализации двумерных и одномерных данных. Все эти программы доступны в GNU/Linux, а многие — доступны и пользователям других операционных систем. Все 9 программ позволяют строить такие графики, которые не стыдно показывать или печатать. Это то, что называется «publication quality».

Выбор программ ограничен теми, которые предназначены для визуализации одномерных или двумерных данных. Под одномерными (1D) данными я подразумеваю отображение одного одномерного множества на другое, например функциональную зависимость y = sin(x). Под двумерными (2D) данными я подразумеваю отображение двумерного множества на одно- или двумерное, например, функциональную зависимость z = x*x + y*y или векторно-значную функцию, заданную на плоскости. На мой взгляд, именно визуализация одно- и двумерных данных — самая распространённая задача.

Программы, ориентированные, в первую очередь, на визуализацию многомерных данных, из сравнения исключены. Однако упоминания все эти программы вполне заслуживают: OpenDX, VTK, MayaVi, Vis5D+. Всё это интересная, но уже совсем другая история. Также в сравнении не учавствовали программы для построения графов и для других экзотичных способов визуализации. Из них стоит упомянуть graphviz и prefuse.

Итак, в сравнении участвовали:

  • gnuplot — ветеран отрасли, поэтому с ним знакомы и умеют работать почти все, кому нужны графики; я сам пользуюсь им с удовольствием, поскольку с помощью всего одной-двух коротких команд можно сносно отобразить данные;
  • Gri — менее известный проект, фактически язык программирования для рисования научных графиков; изначально активно использовался для представления географической информации, поэтому здесь полный порядок с изолиниями и цветовыми картами;
  • matplotlib — сравнительно молодой, но богатый возможностями и активно развивающийся проект, является библиотекой для языка Python; особенность matplotlib — синтаксис, приближенный к MATLAB; отсюда и второе название проекта: pylab;
  • PyX — другой пакет для визуализации с помощью Python; выбор между matplotlib и PyX во многом дело вкуса, но надо отметить, что некоторые вещи естественнее делать в одном, а другие — в другом (см. таблицу);
  • Tioga — библиотека для языка Ruby, использующая PDFLaTeX для отрисовки графиков; как следствие — радующий глаз качественный результат, но достаточно крутая кривая обучения (кроме освоения Ruby потребуется разобраться с самой тиогой);
  • Ctioga — та же самая Tioga для тех, кто хочет сейчас и сразу; параметры графика задаются из командной строки, а для его рисования уже используется Tioga; к сожалению, годится Ctioga только для одномерных данных, но для них вполне может заменить gnuplot;
  • GNU plotutils — она же утилитка graph; лично я нахожу её интерфейс менее интуитивным и удобным для работы, а возможности более ограниченными, чем у других программ; однако входящая в тот же пакет библиотека libplot может быть интересна с точки зрения написания своих программ для построения графиков;
  • plotmtv — далеко не новый проект, и, как мне кажется, находящийся в стагнации; отлично справляется с двумерными скалярными и векторными данными; основной недостаток: команды для построения графиков необходимо внедрять в файлы с данными; зато, если файлы в формате plotmtv уже есть, строить графики просто, качество весьма приличное, а основные параметры графика можно поменять и с помощью графического интерфейса;
  • Grace — единственная программа из рассмотренных, в которой можно полностью контроллировать построение графиков с помощью графического интерфейса; к сожалению, именно поэтому мне до сих пор не удалось с ней подружиться; возможности у неё весьма приличные, но годится она для визуализации только одномерных данных;

Надо сразу сказать, что у каждой программы есть свои сильные и слабые стороны. Поэтому выбор подходящей программы — это вопрос, который каждый должен решать сам. Выбор зависит от того, какие данные и в каком формате имеются, какие графики хочется получить, насколько высоки оформительские требования, насколько быстро нужно получить графики и в каком количестве их строить... Приведённая ниже сравнительная таблица должна в этом помочь. Для начала советую обратить внимание на примеры (ссылки на галереи с примерами в таблице), они быстро дадут представление о том, на что эти программы способны.

Я лично пользовался и пользуюсь gnuplot, Gri, matplotlib, Tioga и Ctioga — и доволен каждой из них. Если нужно отрисовать что-то быстро (для себя) — обычно мой выбор — gnuplot, Gri или Ctioga. Gnuplot также использую, если нужно отрисовать поверхность уровня. Если нужно рисовать изолинии или цветовые карты по двумерным данным, лучше всего с этим справляются Gri и Tioga. Это может делать и matplotlib, но с ней я познакомился сравнительно недавно и использовал пока только для разных диаграмм.

Для сравнения, наверное, можно было бы также добавить программы Kchart и SciGraphica. К сожалению, эти программы я лично не использовал ни разу и судить о них не могу. Буду рад добавить информацию и по ним, если ей располагает кто-то из читателей.

Сравнительная таблица: онлайн на Google Docs, в файле формата ODF, на блоге-первоисточнике .

Смотрите также:




Комментарии

Vaslav, Fri Jul 31 12:52:48 2009:
Странно, а где же Labplot и QtiPlot???
grub, Mon Aug 18 12:51:14 2008:
интересная тема, но это все для "умных") Я вот, когда надо визуализировать по быстрому, пользую perl с модулем Chart::Lines... Кстати быстро рисует и достаточно большие выборки в 10000 значений...

Комментарии заморожены.

Новости:

Все новости на CitCity.ru

Компании месяца

 
Последние комментарии
Почему школам следует использовать только свободные программы (101)
20 Декабрь, 14:51
ОСТОРОЖНО: ВИНДОФИЛИЯ! (2250)

24 Декабрь, 22:53
Linux в школе: мифы про школу и информатику (334)
24 Декабрь, 22:43
Kubuntu Feisty (15)
24 Декабрь, 18:42
Software is like sex: it's better when it's free.
©Linus Torvalds