Верно, это снова Джулия, я обещаю, что R, Scala и Python все еще находятся в этом кругу любви
Plots.JL - такой разнообразный пакет, когда дело касается визуализации в Julia. Хотя большинство серверных программ используют Python, использование Plots.jl сопоставимо с использованием Plotly, Matplotlib (PyPlot) и даже большего количества инструментов внутри одного пакета. Полный список бэкэндов, включая бэкэнды на основе Python, а также бэкэнды Julia, C и даже LaTex для Plots.jl, можно найти здесь.
Все эти серверные части полезны для того случая использования, к которому они применяются. Серверная часть GR обычно предназначена для быстрой, легкой и простой визуализации с минимальными параметрами, которые нужно установить для изменения вашего графика. Тем не менее, это все еще очень полезный инструмент. Фактически, вы можете часто видеть, как я использую GR для визуализаций при работе с Джулией. Ноутбук, как всегда, здесь.
Убедитесь, что вы используете серверную часть GR
Хотя это кажется относительно рудиментарным, это вернет выбранный вами сервер:
using Plots # Using function we can return what backend we are in: println("Current Plots.jl Backend:") Plots.backend()
А если это не GR, вы можете установить его на GR, выполнив:
Plots.gr()
Основы
Как всегда, есть некоторые (почти) универсальные параметры, которые будут применяться к каждому типу графика, например, цвет фона, линии сетки, xticks, yticks, метки и т. Д. Вот довольно простой график рассеяния с некоторыми из доступных параметров:
scatter(x,y, # title: title = "GR Scatter Plot", # X label: xlabel = "Random data", # Y label ylabel = "Random data", # Grid: grid = false, # Legend position legend=:bottomright, # Color of the marker color = :lightblue, # Marker stroke width and opacity markerstrokewidth = 4, markerstrokealpha = .75, # Marker stroke color markerstrokecolor = :lightblue, # Adjust out y ticks yticks = [20,40,50], # Our font options fontfamily = :Courier,xtickfontsize=7,ytickfontsize=9, ytickfont=:Courier,xtickfont = :Courier,titlefontsize=13, # We can also add annotations, super easily: )
Заголовок
Конечно, заголовок довольно прост, просто установите заголовок равным строке, относительно прямо. Мы также можем изменить шрифт заголовка, используя
titlefont = :FontName titlefontsize = fontsize
Мы также можем установить шрифт глобально, конечно, я предпочитаю хранить их в одном экземпляре, но это может быть полезно для некоторых:
gr(tickfont=font("serif"), titlefont=font("serif"))
Сетка и легенда
Чтобы удалить сетку, которая включена по умолчанию, мы просто добавляем
grid = false
в наши параметры. Положение легенды немного сложнее, поскольку есть только предустановленные позиции, в которые мы можем ее поместить. Например, здесь я использую: нижний правый. Я не считаю необходимым вдаваться в подробности, потому что другие позиции относятся к синтаксису этого.
Кроме того, изменить текст в легенде относительно просто,
label="Sample"
X - этикетка и клещи, Y - этикетка и клещи
Чтобы установить label = в строку, достаточно просто:
xlabel = "MyLabel" ylabel = "MyLabel"
Список тиков, конечно же, должен находиться в диапазоне от X до Y и принимается в параметрах как массив.
yticks = [20,40,50]
Форма, цвет, размер и альфа-канал маркера
Примечание. На графиках, которые смешивают линии и другие элементы, цвет изменяет цвет только согласованных точек, но не линии. Обводка маркера будет определять размер нашего контура, чтобы применить те же свойства, что и здесь:
# Marker stroke width and opacity markerstrokewidth = 4, markerstrokealpha = .75, # Marker stroke color markerstrokecolor = :lightblue,
Делаем то же самое, но только убираем «мазок маркера».
color = :lightblue, width = 4 alpha = .75
Линейный график с вводом различных параметров
x = [1,2,3,4,5,6,7,8] y = [3,4,5,6,7,8,9,10] gr(bg=:whitesmoke) plot(x,y,arrow = true, linewidth = 6, color = :pink, yticks=([0,250000,500000,750000,100000]), grid = false,legend=:bottomright,label="Sample", title = "Price per square footage in NYC", xlabel = "Square Footage", ylabel = "Sale Price", fontfamily = :Courier,xtickfontsize=4,ytickfontsize=4, ytickfont=:Courier,xtickfont = :Courier,titlefontsize=10 )
Новые детали:
- Стрелка
Стрелка - это логическое значение, которое просто помещает маленький треугольник в конец вашей строки.
- ширина линии
Целое число, определяющее ширину линии.
- Фоновый цвет
Мы просто используем функцию gr () и вводим в параметры следующее:
gr(bg=:whitesmoke)
Теперь мы займемся рассеянием и построим линию вместе.
gr(leg=false, bg=:lightblue) scatter(x,y,smooth = true, title = "NYC Housing Pricing",arrow = true, markershape = :hexagon, markersize = 3, markeralpha = 0.6, markercolor = :blue, markerstrokewidth = 1, markerstrokealpha = 0.0, markerstrokecolor = :black, linealpha = 0.5, linewidth = 5, linecolor = :orange, textcolor = :white, xlabel = "Area",ylabel = "Pricing", fontfamily = :Courier,grid = false)
Новые детали
- цвет текста
Изменяет цвет меток по оси x и по оси y.
- Linealpha
- ширина линии
- цвет линии
Как я объяснил, у линий есть отдельные параметры, когда они используются вместе с другими графиками. Это делится на «линейные альфа, ширину и цвет». Это изменит свойства нашей линии, а не нашего маркера, поэтому мы можем изменять наши точки и нашу линию независимо.
- маркер
Конечно, это меняет форму точек, которые мы рисуем, здесь мы используем шестиугольную форму.
Основные макеты
Макеты также часто являются неотъемлемой частью любой графической библиотеки.
gr(leg=false, bg=:black) l = @layout [ a{0.3w} [grid(3,3) b{0.2h} ]] plot( rand(200,11), layout = l, legend = false, seriestype = [:bar :scatter :path], textcolor = :white, markercolor = :green, linecolor = :orange, markerstrokewidth = 0,yticks = [.5,1], xticks = [0,100,200] )
Шаг первый - создать наш макет, который на самом деле называется конструктором. Мы делаем это с помощью:
layout = @layout [[parameters]]
Итак, теперь давайте разберемся, что означает каждая часть этой части легенды, мы начнем с:
l = @layout [ a{0.3w} [grid(1,1) b{0.5h}]]
Часть перед не так уж и важна, это просто локальный метод доступа для конструктора; вы можете поместить сюда все, что захотите. Все, что делает {0.3w}, это определяет ширину визуализации.
l = @layout [ a{0.3w} [grid(1,1) b{0.5h}]]
Что касается этой последней части, он создает сетку, которая в демонстрации выше имеет размер 3 x 3, и визуализации будут повторяться в них, если список слишком мал.
Новые детали
- тип серии
При этом наш упорядоченный массив типов моделей будет применяться к нашему макету.
- макет
Это устанавливает макет для нашей визуализации.
- легенда
Легенда - это логическое значение, удаляющее легенду, наклеенную поверх нашей визуализации.
Базовая анимация
Правильно, GR также поддерживает анимацию. Анимация так же проста, как создание цикла for и добавление:
@gif
К его началу.
p = plot([sin, cos], zeros(0), leg=false,linecolor=:white) anim = Animation() @gif for x = range(0, stop=10π, length=100) push!(p, x, Float64[sin(x), cos(x)]) frame(anim) end
GR - отличный инструмент
Для увеличения рабочего процесса. Внутренняя часть GR делает многие графические изображения гладкими и очень простыми. Я планирую больше поговорить о GR и некоторых других серверных компонентах, связанных с Plots.jl Джулии, но пока GR работает быстро и хорошо подходит, особенно благодаря своей скорости и простоте использования.