Начало работы
|
Страница в процессе перевода. |
Представляем Makie — экосистему визуализации данных для языка Julia.
В этом руководстве содержатся сведения о настройке и создании графиков подобных приведенному ниже.
Требования
Вам нужно только подключение к Интернету и достаточно актуальная установка Julia. Если среда Julia еще не установлена, следуйте инструкциям на этой странице: julialang.org/downloads/.
Система Makie доступна для Windows, Mac и Linux.
Установка
В этом руководстве мы будем использовать пакет CairoMakie.
|
Info Makie предлагает несколько пакетов бэкендов, каждый из которых имеет собственные преимущества. CairoMakie хорошо работает со статичной двухмерной графикой и выполняется на большинстве компьютеров, поскольку использует только ЦП и не требует GPU. |
Сначала создайте папку в системе и назовите ее makie_tutorial. Мы будем использовать ее для установки CairoMakie и сохранения графиков.
Запустите Julia, например выполнив команду julia в терминале.
В REPL (Read-Eval-Print-Loop — так называется интерфейс командной строки Julia) Julia измените активный рабочий каталог на папку makie_tutorial, выполнив эту команду, но обязательно укажите расположение, где вы создали папку makie_tutorial.
cd("path/to/the/folder/makie_tutorial")
Теперь сделайте доступной библиотеку диспетчера пакетов Pkg.
using Pkg
Затем активируйте текущий каталог, также называемый "." (это означает нашу папку makie_tutorial), в качестве среды Pkg.
Pkg.activate(".")
Теперь можно установить CairoMakie и все его зависимости, выполнив команду.
Pkg.add("CairoMakie")
На это потребуется некоторое время. Для скачивания всех нужных файлов необходимо подключение к Интернету.
После завершения этого процесса в папке makie_tutorial должны появиться файлы Project.toml и Manifest.toml. Эти файлы описывают новую среду, а скачанные пакеты хранятся в другом месте — в центральном общем расположении.
Если все получилось, вы сможете загрузить CairoMakie.
using CairoMakie
Поздравляем, теперь все готово для построения графиков.
Построение графиков
Выполните эти две строки, чтобы сделать данные для первого графика доступными в сеансе Julia. Они представляют собой несколько воображаемых измерений, выполненных в течение двух секунд.
seconds = 0:0.1:2
measurements = [8.2, 8.4, 6.3, 9.5, 9.1, 10.5, 8.6, 8.2, 10.5, 8.5, 7.2,
8.8, 9.7, 10.8, 12.5, 11.6, 12.1, 12.1, 15.1, 14.7, 13.1]
Давайте сначала взглянем на эти данные как на линейный график. В Makie линейные графики строятся с помощью функции lines.
lines(seconds, measurements)
|
Info После возврата |
Если вы работаете в такой среде IDE, как VSCode с установленным расширением Julia, возможно, открылась область построения. Если ничего другого не найдено, изображение должно отобразиться в приложении просмотра изображений вашей ОС или в браузере.
Попробуем использовать другую функцию построения графиков, чтобы отобразить каждую точку данных как отдельный маркер. Для этого хорошо подходит функция scatter.
scatter(seconds, measurements)
Наша цель — показать данные измерений вместе с линией, представляющей экспоненциальное приближение. Давайте представим, что мы настроили функцию f(x) = exp(x) + 7. Ее можно построить в виде линии, как показано далее.
lines(seconds, exp.(seconds) .+ 7)
Теперь мы хотим, чтобы график рассеяния и линейный график были наложены друг на друга.
scatter(seconds, measurements)
lines!(seconds, exp.(seconds) .+ 7)
current_figure()
Объекты Figure и Axis
До сих пор мы использовали два важных объекта в Makie только в неявном виде: Figure и Axis.
Figure — это самый внешний объект-контейнер. Axis представляет собой один из типов объектов оси, который может содержать графики. Объект Axis можно поместить в объект Figure, а затем выполнить построение. Попробуем повторить предыдущий график с этой системой.
f = Figure()
ax = Axis(f[1, 1])
scatter!(ax, seconds, measurements)
lines!(ax, seconds, exp.(seconds) .+ 7)
f
Теперь обе функции, scatter! и lines!, явно построены в блоке Axis, который мы помещаем в блок Figure. Axis(f[1, 1]) означает, что мы помещаем Axis в макет Figure в позицию строки 1 столбца 1.
f = Figure()
ax = Axis(f[1, 1],
title = "Experimental data and exponential fit",
xlabel = "Time (seconds)",
ylabel = "Value",
)
scatter!(ax, seconds, measurements)
lines!(ax, seconds, exp.(seconds) .+ 7)
f
Применение стиля к графикам
Функции построения графиков принимают множество различных атрибутов стиля в качестве именованных аргументов. Изменим цвет обоих графиков на красный с именем :tomato, а стиль линий — на :dash.
f = Figure()
ax = Axis(f[1, 1],
title = "Experimental data and exponential fit",
xlabel = "Time (seconds)",
ylabel = "Value",
)
scatter!(ax, seconds, measurements, color = :tomato)
lines!(ax, seconds, exp.(seconds) .+ 7, color = :tomato, linestyle = :dash)
f
Условные обозначения
Последний элемент, которого нам не хватает, — условные обозначения. Одним из способов создания условных обозначений является пометка графиков с помощью ключевого слова label и использование функции axislegend.
f = Figure()
ax = Axis(f[1, 1],
title = "Experimental data and exponential fit",
xlabel = "Time (seconds)",
ylabel = "Value",
)
scatter!(
ax,
seconds,
measurements,
color = :tomato,
label = "Measurements"
)
lines!(
ax,
seconds,
exp.(seconds) .+ 7,
color = :tomato,
linestyle = :dash,
label = "f(x) = exp(x) + 7",
)
axislegend(position = :rb)
f
Сохранение рисунка
Если график нас устраивает, его можно сохранить в файл с помощью функции save. Наиболее распространенными форматами являются png для изображений и svg или pdf для векторной графики.
save("first_figure.png", f)
save("first_figure.svg", f)
save("first_figure.pdf", f)
Теперь в папке makie_tutorial должны находиться три файла.