Мнение
Библиотеки визуализации Julia: что лучше?
Обзор библиотек визуализации, обычно используемых в языке Julia
Вступление
Язык программирования Julia - относительно молодой, перспективный язык для научных и числовых вычислений. Хотя Джулия объективно быстрее и, судя по моему опыту, с ней приятнее работать, она оказалась недальновидной из-за своей экосистемы. Экосистема Джулии относительно незрелая, в первую очередь, конечно, потому, что Джулия - такой молодой язык. При этом экосистема Джулии стремительно развивается.
Одним из наиболее важных наборов пакетов в любом режиме науки о данных является программное обеспечение для визуализации данных. Хотя у Джулии может не быть самых современных и совершенных библиотек Python, таких как Bokeh и Plot.ly, у нее есть несколько относительно внушительных возможностей визуализации данных. Однако для новых пользователей эта новая экосистема может быть немного сложной, и может быть трудно выбрать правильные пакеты.
Мои предпочтения (предисловие)
Одна вещь, которую я хотел бы объяснить о графических библиотеках и модулях в целом, заключается в том, что иногда есть как субъективные, так и объективные причины, по которым один может предпочесть использование одного над другим. При этом, хотя эта статья в основном будет сосредоточена на объективных моментах, мои предпочтения определенно выйдут наружу в какой-то момент.
В трех больших пакетах визуализации данных в Julia задействовано много совершенно разных методологий. Иногда одни методологии могут быть предпочтительны, а другие - ненавистны. Итак, вот мои выводы и сравнения между тремя крупнейшими библиотеками графиков на языке Julia на сегодняшний день.
Plots.jl
Plots.jl - это пакет, который можно использовать как высокоуровневый API для работы с несколькими различными серверными приложениями для построения графиков. Сюда входят GR, Matplotlib.Pyplot и, наконец, Plot.ly. Пакет в основном использовался, когда экосистема Julia была слишком незрелой, чтобы поддерживать чисто юлианскую графическую архитектуру. При этом это уже не так, поэтому с точки зрения удобства использования я бы определенно не рекомендовал Plots.jl.
Первый и наиболее очевидный недостаток Plots.jl заключается в том, что он по своей природе является интерфейсом для другого программного обеспечения. Некоторые из этого программного обеспечения также полагаются на PyCall.jl, что означает, что визуализации Pyplot и Plot.ly будут работать значительно медленнее, чем если бы они были пакетами Julian. Кроме того, PyCall.jl на самом деле медленнее, чем использование самого Python, поэтому использование Plots.jl с Julia по сравнению с использованием Plot.ly или Pyplot с Python дает объективное преимущество для реализации Python.
Еще одна большая проблема с этим пакетом - это абсолютно нелепое время предварительной компиляции JIT. Причина возникновения такой проблемы в том, что для работы модуля необходимо скомпилировать три разных пакета, ни один из которых не является родным для Julia.
С другой стороны, Plots.jl очень хорош в его надежности и простоте. Тот факт, что он использует почтенные серверные части, означает, что пакет редко - если вообще когда-либо - ломается. Пакет Plots.jl также относительно прост и удобен в использовании, особенно при использовании серверной части GR по умолчанию. Если вы хотите узнать больше о фактическом использовании серверной части GR с Plots.jl, у меня есть полное руководство по этому вопросу здесь:
GadFly.jl
GadFly.jl - это своего рода ответ Джулии на Plot.ly. GadFly, безусловно, субъективно моя любимая библиотека визуализации на этом языке, но также объективно она довольно хороша по сравнению с другими конкурирующими модулями. GadFly создает красивые и интерактивные визуализации с интеграцией Javascript, концепцию, которую невозможно ощутить ни с одним из других пакетов визуализации в этом списке.
GadFly тоже написан на чистом Julia. По сравнению с Plots.jl, Gadfly предварительно компилируется всего за миллисекунды и может выдавать визуализацию за очень короткое время.
Хотя GadFly - мой фаворит в этом списке, у него также есть несколько заметных недостатков. Во-первых, это не обязательно самый разнообразный пакет. Может быть трудно получить именно то, что вам может понадобиться в визуализации, потому что с GadFly сложно создать что-то с нуля. При этом эта проблема в основном является результатом реализации Javascript и в основном ощущается только по сравнению с более статическими решениями. Если вы хотите узнать больше о GadFly.jl, у меня есть целая статья об этом здесь:
VegaLite.jl
Еще один замечательный пакет визуализации для Юлии - VegaLite.jl. VegaLite можно рассматривать как ответ Юлиана на что-то вроде Python Seaborn. Подобно GadFly, реализация Julian VegaLite написана на чистом языке Julia. Самое замечательное в VegaLite - это то, что он инклюзивный и невероятно динамичный.
Хотя VegaLite может не обладать интерактивностью GadFly, он наверняка компенсирует это тем, что является фантастической библиотекой визуализации, которая невероятно настраиваема. Существенное различие между VegaLite и GadFly заключается в том, что VegaLite состоит из модульных секций, которые собираются вместе, чтобы создать композицию. В результате VegaLite представляет собой гораздо более разнообразный пакет с множеством опций.
Заключение
Хотя в прошлом у Джулии не было лучших реализаций графических библиотек, очевидно, что ситуация быстро меняется. Для использования доступны не только новые чистые юлианские варианты, но и довольно фантастические варианты. Из этих трех я обычно предпочитаю GadFly. Это потому, что я люблю интерактивные визуализации. Методология GadFly также невероятно проста, что позволяет легко настроить и запустить некоторые визуализации с минимальными усилиями. При этом VegaLite может быть одним из лучших вариантов, доступных для программистов Джулии, для углубленной визуализации для анализа данных.