Верно, это снова Джулия, я обещаю, что 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 работает быстро и хорошо подходит, особенно благодаря своей скорости и простоте использования.