Я сравнил 9 свободных программ для визуализации двумерных и одномерных данных. Все эти программы доступны в GNU/Linux, а многие — доступны и пользователям других операционных систем. Все 9 программ позволяют строить такие графики, которые не стыдно показывать или печатать. Это то, что называется «publication quality».
Выбор программ ограничен теми, которые предназначены для визуализации одномерных или двумерных данных. Под одномерными (1D) данными я подразумеваю отображение одного одномерного множества на другое, например функциональную зависимость . Под двумерными (2D) данными я подразумеваю отображение двумерного множества на одно- или двумерное, например функциональную зависимость или векторно-значную функцию заданную на плоскости. На мой взгляд, именно визуализация одно- и двумерных данных — самая распространённая задача.
Программы, ориентированные в первую очередь на визуализацию многомерных данных, из сравнения исключены. Однако упоминания все эти программы вполне заслуживают: 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, и прямо здесь (правда, придётся использовать прокрутку):
Смотрите также:
☙ Как построить график с изолиниями в gnuplot, gri и pylab☙ Как строить цветные поверхности в gnuplot в режиме pm3d
☙ Как отрисовывать географические карты и отображать на них данные с помощью GMT