Документация Engee

Axis

Страница в процессе перевода.

Создание оси

Axis — это двумерная ось, которая хорошо работает с автоматическими макетами. Ниже описан процесс создания оси.

using CairoMakie

f = Figure()

ax = Axis(f[1, 1], xlabel = "x label", ylabel = "y label",
    title = "Title")

f
fbdbcb1

Построение графика по оси

С Axis можно использовать все обычные изменяемые функции построения двумерных графиков. Эти функции возвращают созданный объект графика. Если опустить аргумент ax, то в качестве оси current_axis() обычно выступает ось, которая была создана последней.

lineobject = lines!(ax, 0..10, sin, color = :red)
scatobject = scatter!(0:0.5:10, cos, color = :orange)

f
39a60c3

Удаление графиков

Объект графика можно удалить напрямую с помощью delete!(ax, plotobj). Для удаления всех графиков служит функция empty!(ax).

using CairoMakie
f = Figure()

axs = [Axis(f[1, i]) for i in 1:3]

scatters = map(axs) do ax
    [scatter!(ax, 0:0.1:10, x -> sin(x) + i) for i in 1:3]
end

delete!(axs[2], scatters[2][2])
empty!(axs[3])

f
88c1a83

Скрытие линий и дополнительных элементов оси

Вы можете скрыть все элементы оси вручную, задав их конкретным атрибутам видимости значение false, например xticklabelsvisible, но это может быть утомительной задачей. Однако можно воспользоваться рядом вспомогательных функций.

Чтобы скрыть линии оси, используйте hidespines!.

using CairoMakie
f = Figure()

ax1 = Axis(f[1, 1], title = "Axis 1")
ax2 = Axis(f[1, 2], title = "Axis 2")

hidespines!(ax1)
hidespines!(ax2, :t, :r) # только вверху и справа

f
88d5e39

Чтобы скрыть дополнительные элементы, используйте hidedecorations! или специальные функции hidexdecorations! и hideydecorations!. Если хотите оставить эти элементы, при скрытии задайте label = false, ticklabels = false, ticks = false, grid = false, minorgrid = false или minorticks = false в качестве именованных аргументов. Например, на фасетных (решетчатых) графиках принято скрывать все, кроме линий сетки.

using CairoMakie

f = Figure()

ax1 = Axis(f[1, 1], title = "Axis 1")
ax2 = Axis(f[1, 2], title = "Axis 2")
ax3 = Axis(f[1, 3], title = "Axis 3")

hidedecorations!(ax1)
hidexdecorations!(ax2, grid = false)
hideydecorations!(ax3, ticks = false)

f
c2e2848

Связывание осей

Оси можно связывать друг с другом. Каждая ось просто отслеживает список других осей, который обновляется при изменении самой оси. Измерения x и y можно связать по отдельности.

using CairoMakie

f = Figure()

ax1 = Axis(f[1, 1])
ax2 = Axis(f[1, 2])
ax3 = Axis(f[2, 2])

linkyaxes!(ax1, ax2)
linkxaxes!(ax2, ax3)

ax1.title = "y linked"
ax2.title = "x & y linked"
ax3.title = "x linked"

for (i, ax) in enumerate([ax1, ax2, ax3])
    lines!(ax, 1:10, 1:10, color = "green")
    if i != 1
        lines!(ax, 11:20, 1:10, color = "red")
    end
    if i != 3
        lines!(ax, 1:10, 11:20, color = "blue")
    end
end

f
b95d27f

Выравнивание меток соседних осей

При размещении осей с разными делениями друг с другом иногда желательно визуально выровнять метки этих осей. По умолчанию под метки делений выделено минимальное место. Это значение можно зафиксировать с помощью функций tight_xticklabel_spacing!, tight_yticklabel_spacing! либо tight_ticklabel_spacing! для обеих меток.

Обратите внимание, что метки x и y на этом рисунке смещены из-за разной длины меток делений.

using CairoMakie

f = Figure()

ax1 = Axis(f[1, 1], title = "Axis 1", ylabel = "y label", ytickformat = "{:.3f}")
ax2 = Axis(f[2, 1], title = "Axis 2", ylabel = "y label", xlabel = "x label")
ax3 = Axis(f[2, 2], title = "Axis 3", xlabel = "x label", xtickformat = "{:.3f}", xticklabelrotation = pi/4)

f
308634d

Чтобы выровнять метки, задайте атрибутам xticklabelspace или yticklabelspace связанных осей значение, соответствующее максимальному расстоянию.

yspace = maximum(tight_yticklabel_spacing!, [ax1, ax2])
xspace = maximum(tight_xticklabel_spacing!, [ax2, ax3])

ax1.yticklabelspace = yspace
ax2.yticklabelspace = yspace

ax2.xticklabelspace = xspace
ax3.xticklabelspace = xspace

f
903f807

Создание двойниковой оси

В настоящее время нет специальной функции, но вы можете просто добавить ось поверх другой, а затем скрыть все, кроме второй оси.

Вот пример того, как это сделать со второй осью y в правой части.

using CairoMakie

f = Figure()

ax1 = Axis(f[1, 1], yticklabelcolor = :blue)
ax2 = Axis(f[1, 1], yticklabelcolor = :red, yaxisposition = :right)
hidespines!(ax2)
hidexdecorations!(ax2)

lines!(ax1, 0..10, sin, color = :blue)
lines!(ax2, 0..10, x -> 100 * cos(x), color = :red)

f
665d019

Взаимодействие с осями

Ось поддерживает несколько предопределенных механизмов взаимодействия.

Прокрутка масштаба

Вы можете изменять масштаб оси, используя прокрутку для его увеличения и уменьшения. Если во время прокрутки нажать x или y, изменение масштаба будет ограничено этим измерением. Эти клавиши можно изменить с помощью атрибутов xzoomkey и yzoomkey. Вы всегда можете ограничивать измерения масштаба, задавая атрибутам оси xzoomlock или yzoomlock значение true.

Панорамирование перетаскиванием

Вы можете панорамировать вокруг оси с помощью щелчка правой кнопкой мыши и перетаскивания. Если во время панорамирования нажать x или y, движение панорамирования будет ограничено этим измерением. Эти клавиши можно изменить с помощью атрибутов xpankey и ypankey. Вы всегда можете ограничивать измерения панорамирования, задавая атрибутам оси xpanlock или ypanlock значение true.

Сброс ограничений

Для сброса ограничений используйте ctrl + leftclick. Это равносильно reset_limits!(ax). В этом случае ограничения сбрасываются до значений, сохраненных в ax.limits, а если они равны nothing, они вычисляются автоматически. Если вы ранее вызывали limits!, xlims! или ylims!, при сбросе ограничения эти настройки сохраняются.

В качестве альтернативы можно нажать ctrl + shift + leftclick, что аналогично вызову autolimits!(ax). Эта функция игнорирует ранее заданные ограничения и рассчитывает их заново с учетом содержимого оси.

Масштабирование при выборе прямоугольника

Щелкните левой кнопкой мыши и перетащите элементы масштабирования в выбранную прямоугольную область. Если во время панорамирования нажать x или y, будет затронуто только соответствующее измерение. Вы всегда можете ограничивать измерения масштаба выбора, задавая атрибутам оси xrectzoom или yrectzoom значение true.

Пользовательские взаимодействия

Система взаимодействия — это дополнительная абстракция над низкоуровневой системой событий Makie, позволяющая быстро создавать собственные шаблоны взаимодействия.

Регистрация и отмена регистрации взаимодействий

Для регистрации нового взаимодействия вызовите register_interaction!(ax, name::Symbol, interaction). Аргумент interaction может иметь любой тип.

Чтобы полностью удалить существующее взаимодействие, вызовите deregister_interaction!(ax, name::Symbol). Чтобы узнать, какие взаимодействия активны в данный момент, вызовите interactions(ax). По умолчанию используются взаимодействия :dragpan, :limitreset, :rectanglezoom и :scrollzoom.

Активация и деактивация взаимодействий

Часто требуется не полностью удалить взаимодействие, а лишь отключить его на некоторое время, а затем снова включить. Для этого предназначены функции activate_interaction!(ax, name::Symbol) и deactivate_interaction!(ax, name::Symbol).

Взаимодействие Function

Если взаимодействие (interaction) является функцией (Function), оно должно принимать два аргумента, которые соответствуют событию и оси. Затем эта функция будет вызываться каждый раз, когда ось генерирует событие.

Вот пример такой функции. Обратите внимание, что мы используем специальную сигнатуру диспетчеризации для функций, которая позволяет использовать do-синтаксис.

register_interaction!(ax, :my_interaction) do event::MouseEvent, axis
    if event.type === MouseEventTypes.leftclick
        println("You clicked on the axis!")
    end
end

Как видите, можно ограничить параметр типа аргумента события. Выберите MouseEvent, KeysEvent или ScrollEvent, если требуется работать только с определенным классом. У функции также может быть несколько методов, работающих с каждым типом.

Пользовательское взаимодействие объектов

Вариант с функцией больше всего подходит для взаимодействий, в которых не требуется сложное управление состоянием. Можно использовать более детализированный, но гибкий вариант. Для этого определяется новый тип, который обычно содержит все интересующие вас переменные состояния.

Каждый раз, когда ось генерирует событие, она вызывает process_interaction(interaction, event, axis) для всех сохраненных взаимодействий. Определяя process_interaction для конкретных типов взаимодействия и событий, вы можете создавать более сложные схемы взаимодействия.

Вот пример с простой обработкой состояний, где разрешаются щелчки левой кнопкой мыши при нажатой клавише l и правой кнопкой мыши при нажатой клавише r:

mutable struct MyInteraction
    allow_left_click::Bool
    allow_right_click::Bool
end

function Makie.process_interaction(interaction::MyInteraction, event::MouseEvent, axis)
    if interaction.allow_left_click && event.type === MouseEventTypes.leftclick
        println("Left click in correct mode")
    end
    if interaction.allow_right_click && event.type === MouseEventTypes.rightclick
        println("Right click in correct mode")
    end
end

function Makie.process_interaction(interaction::MyInteraction, event::KeysEvent, axis)
    interaction.allow_left_click = Keyboard.l in event.keys
    interaction.allow_right_click = Keyboard.r in event.keys
end

register_interaction!(ax, :left_and_right, MyInteraction(false, false))

Настройка и очистка

Некоторые взаимодействия могут иметь более сложное состояние из-за объектов графиков, которые необходимо настроить или удалить. Для этих целей вы можете перегрузить методы registration_setup!(parent, interaction) и deregistration_cleanup!(parent, interaction), которые вызываются при регистрации и отмене регистрации, соответственно.

Атрибуты

alignmode

Значение по умолчанию: Inside()

Режим выравнивания оси в ее родительской сетке.

aspect

Значение по умолчанию: nothing

Управляет принудительным соотношением сторон оси.

Значение по умолчанию nothing не будет ограничивать соотношение сторон. Область оси будет охватывать ширину и высоту, доступные в макете.

DataAspect() уменьшает эффективный размер оси в пределах доступного пространства макета, чтобы соотношение сторон оси по ширине и высоте соответствовало ограничениям данных. Например, если значения x находятся в диапазоне от 0 до 300, а значения y - от 100 до 250, DataAspect() , то в результате соотношение сторон будет равно (300 - 0) / (250 - 100) = 2. Это может быть полезно при печати изображений, поскольку изображение будет отображаться без изменений.

AxisAspect(ratio) уменьшает эффективный размер оси в пределах доступного пространства макета, чтобы соотношение сторон оси по ширине и высоте соответствовало ratio.

Обратите внимание, что оба DataAspect и AxisAspect это может привести к образованию избыточного пробела вокруг оси. Сделать GridLayout учитывая ограничения по соотношению сторон, обратитесь к настройкам размера Aspect столбца или строки.

using CairoMakie
using FileIO

f = Figure()

ax1 = Axis(f[1, 1], aspect = nothing, title = "nothing")
ax2 = Axis(f[1, 2], aspect = DataAspect(), title = "DataAspect()")
ax3 = Axis(f[2, 1], aspect = AxisAspect(1), title = "AxisAspect(1)")
ax4 = Axis(f[2, 2], aspect = AxisAspect(2), title = "AxisAspect(2)")

img = rotr90(load(assetpath("cow.png")))
for ax in [ax1, ax2, ax3, ax4]
    image!(ax, img)
end

f
9af84b5

autolimitaspect

Значение по умолчанию: nothing

Если autolimitaspect если задано значение, пределы оси будут автоматически скорректированы таким образом, чтобы отношение пределов к размеру оси было равно этому числу.

Например, если размер оси равен 100 x 200, то с помощью autolimitaspect = 1 автолимиты также будут иметь соотношение 1 к 2. Параметр autolimitaspect = 1 является дополнением к параметру aspect = AxisAspect(1), но при этом aspect изменяет размер оси, autolimitaspect изменяет пределы для достижения желаемого соотношения.

Warning autolimitaspect могут возникать циклические обновления, которые приводят к ошибкам переполнения стека. Это происходит, когда расширенные лимиты имеют другие значения, чем нерасширенные. Разница в размерах приводит к повторному отображению, что может снова привести к различным автолимитам в соответствии с новым соотношением сторон, новым отметкам и снова повторному отображению.

Вы можете скрыть метки или исправить `xticklabelspace` и `yticklabelspace` чтобы избежать повторных запусков. Вы можете выбрать объем свободного места вручную или выбрать текущий автоматический объем с помощью `tight_ticklabel_spacing!`.

using CairoMakie
f = Figure()

ax1 = Axis(f[1, 1], autolimitaspect = nothing)
ax2 = Axis(f[1, 2], autolimitaspect = 1)

for ax in [ax1, ax2]
    lines!(ax, 0..10, sin)
end

f
3bdabc3

backgroundcolor

Значение по умолчанию: :white

Цвет фона оси.

using CairoMakie
    f = Figure()

    ax1 = Axis(f[1, 1])
    ax2 = Axis(f[1, 2], backgroundcolor = :gray80)

    f
ec8a3ed

bottomspinecolor

Значение по умолчанию: :black

Цвет корешка нижней оси.

bottomspinevisible

Значение по умолчанию: true

Определяет, виден ли корешок нижней оси.

dim1_conversion

Значение по умолчанию: nothing

Глобальное состояние для преобразования измерения x.

dim2_conversion

Значение по умолчанию: nothing

Глобальное состояние для преобразования измерения y.

flip_ylabel

Значение по умолчанию: false

Управляет поворотом метки ylabel в обратном направлении.

halign

Значение по умолчанию: :center

Горизонтальное выравнивание оси в пределах предполагаемого ограничивающего прямоугольника.

height

Значение по умолчанию: nothing

Высота оси.

leftspinecolor

Значение по умолчанию: :black

Цвет корешка левой оси.

leftspinevisible

Значение по умолчанию: true

Определяет, виден ли корешок левой оси.

limits

Значение по умолчанию: (nothing, nothing)

Может использоваться для ручного указания желаемых пределов оси.

То limits атрибут нельзя использовать для считывания фактических границ оси. Значение параметра limits не изменяется при интерактивном масштабировании и панорамировании, и ось может быть соответствующим образом сброшена с помощью функции reset_limits!.

Функция autolimits! сбрасывает значение limits к (nothing, nothing) и настраивает границы оси в соответствии с размерами графиков, добавленных к оси.

Значение limits может быть кортежем из четырех элементов (xlow, xhigh, ylow, yhigh) , где каждое значение может быть вещественным числом или nothing. Это также может быть кортеж (x, y) где x и y может быть nothing или кортеж (low, high). Во всех случаях, nothing означает, что соответствующие предельные значения будут определены автоматически.

Автоматически определяемые пределы также зависят от xautolimitmargin и yautolimitmargin.

Удобные функции xlims! и ylims! разрешить устанавливать только x или y-часть limits. Функция limits! это еще один вариант одновременной установки x и y.

using CairoMakie
f = Figure()

ax1 = Axis(f[1, 1], limits = (nothing, nothing), title = "(nothing, nothing)")
ax2 = Axis(f[1, 2], limits = (0, 4pi, -1, 1), title = "(0, 4pi, -1, 1)")
ax3 = Axis(f[2, 1], limits = ((0, 4pi), nothing), title = "((0, 4pi), nothing)")
ax4 = Axis(f[2, 2], limits = (nothing, 4pi, nothing, 1), title = "(nothing, 4pi, nothing, 1)")

for ax in [ax1, ax2, ax3, ax4]
    lines!(ax, 0..4pi, sin)
end

f
bcdd70a

panbutton

Значение по умолчанию: Makie.Mouse.right

Кнопка для панорамирования.

rightspinecolor

Значение по умолчанию: :black

Цвет корешка правой оси.

rightspinevisible

Значение по умолчанию: true

Определяет, видна ли правая ось позвоночника.

spinewidth

Значение по умолчанию: 1.0

Ширина осевых шипов.

subtitle

Значение по умолчанию: ""

Содержимое подзаголовка axis. Значением может быть любой объект, не имеющий векторного значения, который поддерживает примитив text .

using CairoMakie
f = Figure()

Axis(f[1, 1], title = "Title", subtitle = "Subtitle")
Axis(f[2, 1], title = "Title", subtitle = L"\sum_i{x_i \times y_i}")
Axis(f[3, 1], title = "Title", subtitle = rich(
    "Rich text subtitle",
    subscript(" with subscript", color = :slategray)
))

f
548ff3b

subtitlecolor

Значение по умолчанию: @inherit :textcolor :black

Цвет субтитров

subtitlefont

Значение по умолчанию: :regular

Семейство шрифтов субтитров.

subtitlegap

Значение по умолчанию: 0

Промежуток между подзаголовком и названием.

subtitlelineheight

Значение по умолчанию: 1

Множитель высоты строки субтитров axis.

subtitlesize

Значение по умолчанию: @inherit :fontsize 16.0f0

Размер шрифта субтитров.

subtitlevisible

Значение по умолчанию: true

Определяет, будут ли видны субтитры.

tellheight

Значение по умолчанию: true

Определяет, может ли родительский макет подстраиваться под высоту этого элемента

tellwidth

Значение по умолчанию: true

Определяет, может ли родительский макет подстраиваться под ширину этого элемента

title

Значение по умолчанию: ""

Содержимое заголовка оси. Значением может быть любой объект, не имеющий векторного значения, который поддерживает примитив text .

using CairoMakie
f = Figure()

Axis(f[1, 1], title = "Title")
Axis(f[2, 1], title = L"\sum_i{x_i \times y_i}")
Axis(f[3, 1], title = rich(
    "Rich text title",
    subscript(" with subscript", color = :slategray)
))

f
cac167a

titlealign

Значение по умолчанию: :center

Выравнивание заголовка по горизонтали. Субтитры всегда отображаются в соответствии с этим параметром выравнивания.

Возможны следующие варианты :center, :left или :right.

using CairoMakie
f = Figure()

Axis(f[1, 1], titlealign = :left, title = "Left aligned title")
Axis(f[2, 1], titlealign = :center, title = "Center aligned title")
Axis(f[3, 1], titlealign = :right, title = "Right aligned title")

f
eb942b1

titlecolor

Значение по умолчанию: @inherit :textcolor :black

Цвет заголовка

titlefont

Значение по умолчанию: :bold

Семейство шрифтов заголовка.

titlegap

Значение по умолчанию: 4.0

Промежуток между осью и заголовком.

titlelineheight

Значение по умолчанию: 1

Множитель высоты линии заголовка оси.

titlesize

Значение по умолчанию: @inherit :fontsize 16.0f0

Размер шрифта заголовка.

titlevisible

Значение по умолчанию: true

Определяет, виден ли заголовок.

topspinecolor

Значение по умолчанию: :black

Цвет корешка верхней оси.

topspinevisible

Значение по умолчанию: true

Определяет, видна ли корешок верхней оси.

valign

Значение по умолчанию: :center

Вертикальное выравнивание оси в пределах предполагаемой ограничивающей рамки.

width

Значение по умолчанию: nothing

Ширина оси.

xautolimitmargin

Значение по умолчанию: (0.05f0, 0.05f0)

Относительные границы, добавленные к автоматическим ограничениям в направлении x.

using CairoMakie
    f = Figure()

    data = 0:1

    ax1 = Axis(f[1, 1], xautolimitmargin = (0, 0), title = "xautolimitmargin = (0, 0)")
    ax2 = Axis(f[2, 1], xautolimitmargin = (0.05, 0.05), title = "xautolimitmargin = (0.05, 0.05)")
    ax3 = Axis(f[3, 1], xautolimitmargin = (0, 0.2), title = "xautolimitmargin = (0, 0.2)")

    for ax in [ax1, ax2, ax3]
        lines!(ax, data)
    end

    f
f7621a8

xaxisposition

Значение по умолчанию: :bottom

Положение оси x (:bottom или :top).

using CairoMakie
f = Figure()

Axis(f[1, 1], xaxisposition = :bottom)
Axis(f[1, 2], xaxisposition = :top)

f
4660da6

xgridcolor

Значение по умолчанию: RGBAf(0, 0, 0, 0.12)

Цвет x-образных линий сетки.

xgridstyle

Значение по умолчанию: nothing

Линейный стиль x линий сетки.

xgridvisible

Значение по умолчанию: true

Определяет, видны ли x-образные линии сетки.

xgridwidth

Значение по умолчанию: 1.0

Ширина x линий сетки.

xlabel

Значение по умолчанию: ""

Содержимое метки оси x. Значением может быть любой объект, не имеющий векторного значения, который поддерживает примитив text .

using CairoMakie
f = Figure()

Axis(f[1, 1], xlabel = "X Label")
Axis(f[2, 1], xlabel = L"\sum_i{x_i \times y_i}")
Axis(f[3, 1], xlabel = rich(
    "X Label",
    subscript(" with subscript", color = :slategray)
))

f
b64e3af

xlabelcolor

Значение по умолчанию: @inherit :textcolor :black

Цвет метки xl.

xlabelfont

Значение по умолчанию: :regular

Семейство шрифтов xlabel.

xlabelpadding

Значение по умолчанию: 3.0

Дополнительное заполнение между xlabel и галочками или осью.

using CairoMakie
    f = Figure()

    Axis(f[1, 1], xlabel = "X Label", xlabelpadding = 0, title = "xlabelpadding = 0")
    Axis(f[1, 2], xlabel = "X Label", xlabelpadding = 5, title = "xlabelpadding = 5")
    Axis(f[1, 3], xlabel = "X Label", xlabelpadding = 10, title = "xlabelpadding = 10")

    f
b6d344d

xlabelrotation

Значение по умолчанию: Makie.automatic

Поворот xlabel в радианах.

xlabelsize

Значение по умолчанию: @inherit :fontsize 16.0f0

Размер шрифта xlabel.

xlabelvisible

Значение по умолчанию: true

Определяет, видна ли метка xlabel.

xminorgridcolor

Значение по умолчанию: RGBAf(0, 0, 0, 0.05)

Цвет второстепенных линий сетки x.

xminorgridstyle

Значение по умолчанию: nothing

Линейный стиль линий сетки x minor.

xminorgridvisible

Значение по умолчанию: false

Определяет, видны ли x второстепенных линий сетки.

xminorgridwidth

Значение по умолчанию: 1.0

Ширина x второстепенных линий сетки.

xminortickalign

Значение по умолчанию: 0.0

Выравнивание x-образных отметок по осевому корешку

xminortickcolor

Значение по умолчанию: :black

Цвет галочки для x второстепенных галочек

xminorticks

Значение по умолчанию: IntervalsBetween(2)

Указатель отметок для второстепенных отметок на оси x.

Обычно могут использоваться следующие объекты:

  • IntervalsBetween, делит пространство между двумя соседними главными делениями на n интервалы для n-1 второстепенных делений

  • Вектор чисел

using CairoMakie
f = Figure()

kwargs = (; xminorticksvisible = true, xminorgridvisible = true)
Axis(f[1, 1]; xminorticks = IntervalsBetween(2), kwargs...)
Axis(f[2, 1]; xminorticks = IntervalsBetween(5), kwargs...)
Axis(f[3, 1]; xminorticks = [1, 2, 3, 4], kwargs...)

f
1bf780d

xminorticksize

Значение по умолчанию: 3.0

Размер тика из x второстепенных тиков

xminorticksvisible

Значение по умолчанию: false

Определяет, видны ли незначительные отметки на оси x

xminortickwidth

Значение по умолчанию: 1.0

Ширина тика из x второстепенных тиков

xpankey

Значение по умолчанию: Makie.Keyboard.x

Клавиша для ограничения панорамирования в направлении x.

xpanlock

Значение по умолчанию: false

Блокирует интерактивное панорамирование в направлении x.

xrectzoom

Значение по умолчанию: true

Определяет, влияет ли масштабирование прямоугольника на размер x.

xreversed

Значение по умолчанию: false

Определяет направление оси x вправо (false) или влево (true).

xscale

Значение по умолчанию: identity

Функция масштабирования по оси x.

Это может быть любая обратимая функция, некоторые предопределенные параметры identity, log, log2, log10, sqrt, logit, Makie.pseudolog10 и Makie.Symlog10. Чтобы использовать пользовательскую функцию, вы должны определить соответствующие методы для Makie.inverse_transform, Makie.defaultlimits и Makie.defined_interval.

Если функция масштабирования задана только для ограниченного интервала, ни один объект на графике не может иметь исходных данных, которые находятся за пределами этого диапазона. Например, значение x не может быть меньше или равно 0, если log выбрано для xscale. Важны исходные данные, а не выбранные пользователем ограничения, поскольку все данные должны быть преобразованы, независимо от того, находятся ли они внутри текущих ограничений или за их пределами.

Масштаб оси может влиять на поиск и форматирование отметок в зависимости от значений xticks и xtickformat.

using CairoMakie
f = Figure()

for (i, scale) in enumerate([identity, log10, log2, log, sqrt, Makie.logit])
    row, col = fldmod1(i, 2)
    Axis(f[row, col], xscale = scale, title = string(scale),
        xminorticksvisible = true, xminorgridvisible = true,
        xminorticks = IntervalsBetween(5))

    lines!(range(0.01, 0.99, length = 200), 1:200)
end

f
2c8d977

using CairoMakie
f = Figure()

ax1 = Axis(f[1, 1],
    xscale = Makie.pseudolog10,
    title = "Pseudolog scale",
    xticks = [-100, -10, -1, 0, 1, 10, 100]
)

ax2 = Axis(f[1, 2],
    xscale = Makie.Symlog10(10.0),
    title = "Symlog10 with linear scaling
between -10 and 10",
    xticks = [-100, -10, 0, 10, 100]
)

for ax in [ax1, ax2]
    lines!(ax, -100:0.1:100, -100:0.1:100)
end

f
7771d4a

xtickalign

Значение по умолчанию: 0.0

Выравнивание меток xtick относительно оси вращения (0 = наружу, 1 = внутрь).

xtickcolor

Значение по умолчанию: RGBf(0, 0, 0)

Цвет меток от наклеек.

xtickformat

Значение по умолчанию: Makie.automatic

Форматировщик для отметок на оси x.

Обычно значения отметок сначала определяются с помощью Makie.get_tickvalues, после чего вызывается Makie.get_ticklabels(xtickformat, xtickvalues) . Если определен специальный метод, значения отметок и метки могут быть определены совместно с помощью Makie.get_ticks вместо. Проверьте строку документации на наличие xticks для получения дополнительной информации.

Обычными объектами, которые можно использовать для форматирования отметок, являются:

  • A Function , который принимает вектор чисел и возвращает вектор меток. Меткой может быть все, что может быть нанесено с помощью text примитивный.

  • A String , который используется в качестве спецификатора формата для Format.jl. Например, "{:.2f}kg" форматирует числа, округленные до двух десятичных знаков, и с суффиксом kg.

using CairoMakie
f = Figure(figure_padding = 50)

Axis(f[1, 1], xtickformat = values -> ["$(value)kg" for value in values])
Axis(f[2, 1], xtickformat = "{:.2f}ms")
Axis(f[3, 1], xtickformat = values -> [L"\sqrt{%$(value^2)}" for value in values])
Axis(f[4, 1], xtickformat = values -> [rich("$value", superscript("XY", color = :red))
                                       for value in values])

f
9fa4717

xticklabelalign

Значение по умолчанию: Makie.automatic

Горизонтальное и вертикальное выравнивание меток xticklabels.

xticklabelcolor

Значение по умолчанию: @inherit :textcolor :black

Цвет наклеек xticklabels.

xticklabelfont

Значение по умолчанию: :regular

Семейство шрифтов xticklabels.

xticklabelpad

Значение по умолчанию: 2.0

Пространство между символами xticks и xsticklabels.

using CairoMakie
    f = Figure()

    Axis(f[1, 1], xticklabelpad = 0, title = "xticklabelpad = 0")
    Axis(f[1, 2], xticklabelpad = 5, title = "xticklabelpad = 5")
    Axis(f[1, 3], xticklabelpad = 15, title = "xticklabelpad = 15")

    f
629249e

xticklabelrotation

Значение по умолчанию: 0.0

Вращение меток xticklabels против часовой стрелки в радианах.

xticklabelsize

Значение по умолчанию: @inherit :fontsize 16.0f0

Размер шрифта меток xticklabels.

xticklabelspace

Значение по умолчанию: Makie.automatic

Пространство, зарезервированное для меток xticklabels. Может быть установлено в значение Makie.automatic для автоматического определения необходимого пространства, :max_auto которое может увеличиваться только в соответствии с текущими метками или определенным значением.

using CairoMakie
    f = Figure()

    Axis(f[1, 1], xlabel = "X Label", xticklabelspace = 0.0, title = "xticklabelspace = 0.0")
    Axis(f[1, 2], xlabel = "X Label", xticklabelspace = 30.0, title = "xticklabelspace = 30.0")
    Axis(f[1, 3], xlabel = "X Label", xticklabelspace = Makie.automatic, title = "xticklabelspace = automatic")

    f
f314e13

xticklabelsvisible

Значение по умолчанию: true

Определяет, видны ли метки xticklabels.

xticks

Значение по умолчанию: Makie.automatic

Определяет, какие числовые значения тиков вычисляются для оси x.

Чтобы определить значения тиков и метки, сначала выполните следующие действия Makie.get_ticks(xticks, xscale, xtickformat, xmin, xmax). Если для текущей комбинации отметок, масштабирования и форматирования не определен специальный метод, который одновременно возвращает как значения отметок, так и метки, то числовые значения отметок будут определены с помощью xtickvalues = Makie.get_tickvalues(xticks, xscale, xmin, xmax) , после чего метки будут определены с помощью Makie.get_ticklabels(xtickformat, xtickvalues).

Наиболее распространенными объектами, которые могут использоваться в качестве отметок, являются:

  • Вектор чисел

  • Кортеж с двумя векторами (numbers, labels) где labels могут быть любыми объектами, которые text могут обрабатываться.

  • WilkinsonTicks, средство поиска отметок по умолчанию для линейных отметок

  • LinearTicks, альтернативное средство поиска отметок для линейных отметок

  • LogTicks, оболочка, которая применяет любое другое средство поиска отметок в оболочке к логарифмически преобразованным значениям

  • MultiplesTicks, для поиска отметок, кратных заданному значению, например π

using CairoMakie
fig = Figure()
Axis(fig[1, 1], xticks = 1:10)
Axis(fig[2, 1], xticks = (1:2:9, ["A", "B", "C", "D", "E"]))
Axis(fig[3, 1], xticks = WilkinsonTicks(5))
fig
4b01329

xticksize

Значение по умолчанию: 5.0

Размер меток xtick.

xticksmirrored

Значение по умолчанию: false

Определяет, отображаются ли отметки x и второстепенные отметки на другой стороне оси.

using CairoMakie
f = Figure()

Axis(f[1, 1], xticksmirrored = false, xminorticksvisible = true)
Axis(f[1, 2], xticksmirrored = true, xminorticksvisible = true)

f
b85d9ff

xticksvisible

Значение по умолчанию: true

Определяет, видны ли метки xtick.

xtickwidth

Значение по умолчанию: 1.0

Ширина меток xtick.

xtrimspine

Значение по умолчанию: false

Если true, ограничивает протяженность корешка по оси x самыми внешними основными делениями. Также может быть установлено значение a Tuple{Bool,Bool} для управления каждой стороной отдельно.

using CairoMakie
f = Figure()

ax1 = Axis(f[1, 1], xtrimspine = false)
ax2 = Axis(f[2, 1], xtrimspine = true)
ax3 = Axis(f[3, 1], xtrimspine = (true, false))
ax4 = Axis(f[4, 1], xtrimspine = (false, true))

for ax in [ax1, ax2, ax3, ax4]
    ax.xgridvisible = false
    ax.ygridvisible = false
    ax.rightspinevisible = false
    ax.topspinevisible = false
    xlims!(ax, 0.5, 5.5)
end

f
9cca375

xzoomkey

Значение по умолчанию: Makie.Keyboard.x

Клавиша для ограничения масштабирования в направлении x.

xzoomlock

Значение по умолчанию: false

Блокирует интерактивное масштабирование в направлении x.

yautolimitmargin

Значение по умолчанию: (0.05f0, 0.05f0)

Относительные границы, добавленные к автоматическим ограничениям в направлении y.

using CairoMakie
    f = Figure()

    data = 0:1

    ax1 = Axis(f[1, 1], yautolimitmargin = (0, 0), title = "yautolimitmargin = (0, 0)")
    ax2 = Axis(f[1, 2], yautolimitmargin = (0.05, 0.05), title = "yautolimitmargin = (0.05, 0.05)")
    ax3 = Axis(f[1, 3], yautolimitmargin = (0, 0.2), title = "yautolimitmargin = (0, 0.2)")

    for ax in [ax1, ax2, ax3]
        lines!(ax, data)
    end

    f
b8a10ce

yaxisposition

Значение по умолчанию: :left

Положение оси y (:left или :right).

using CairoMakie
f = Figure()

Axis(f[1, 1], yaxisposition = :left)
Axis(f[2, 1], yaxisposition = :right)

f
eec9d77

ygridcolor

Значение по умолчанию: RGBAf(0, 0, 0, 0.12)

Цвет y-образных линий сетки.

ygridstyle

Значение по умолчанию: nothing

Линейный стиль y-образных линий сетки.

ygridvisible

Значение по умолчанию: true

Определяет, видны ли y-образные линии сетки.

ygridwidth

Значение по умолчанию: 1.0

Ширина линий сетки y.

ylabel

Значение по умолчанию: ""

Содержимое метки оси y. Значением может быть любой объект, не имеющий векторного значения, который поддерживает примитив text .

using CairoMakie
f = Figure()

Axis(f[1, 1], ylabel = "Y Label")
Axis(f[2, 1], ylabel = L"\sum_i{x_i \times y_i}")
Axis(f[3, 1], ylabel = rich(
    "Y Label",
    subscript(" with subscript", color = :slategray)
))

f
cff0e30

ylabelcolor

Значение по умолчанию: @inherit :textcolor :black

Цвет этикетки yl.

ylabelfont

Значение по умолчанию: :regular

Семейство шрифтов ylabel.

ylabelpadding

Значение по умолчанию: 5.0

Дополнительное заполнение между ylabel и галочками или осью.

using CairoMakie
    f = Figure()

    Axis(f[1, 1], ylabel = "Y Label", ylabelpadding = 0, title = "ylabelpadding = 0")
    Axis(f[2, 1], ylabel = "Y Label", ylabelpadding = 5, title = "ylabelpadding = 5")
    Axis(f[3, 1], ylabel = "Y Label", ylabelpadding = 10, title = "ylabelpadding = 10")

    f
4daf287

ylabelrotation

Значение по умолчанию: Makie.automatic

Обозначение поворота в радианах.

ylabelsize

Значение по умолчанию: @inherit :fontsize 16.0f0

Размер шрифта ylabel.

ylabelvisible

Значение по умолчанию: true

Определяет, видна ли метка ylabel.

yminorgridcolor

Значение по умолчанию: RGBAf(0, 0, 0, 0.05)

Цвет второстепенных линий сетки y.

yminorgridstyle

Значение по умолчанию: nothing

Стиль линии y второстепенных линий сетки.

yminorgridvisible

Значение по умолчанию: false

Определяет, видны ли второстепенные линии сетки y.

yminorgridwidth

Значение по умолчанию: 1.0

Ширина y второстепенных линий сетки.

yminortickalign

Значение по умолчанию: 0.0

Выравнивание второстепенных отметок y по оси z

yminortickcolor

Значение по умолчанию: :black

Цвет галочки для y второстепенных галочек

yminorticks

Значение по умолчанию: IntervalsBetween(2)

Указатель отметок для второстепенных отметок на оси y.

Обычно могут использоваться следующие объекты:

  • IntervalsBetween, делит пространство между двумя соседними главными делениями на n интервалы для n-1 второстепенных делений

  • Вектор чисел

using CairoMakie
f = Figure()

kwargs = (; yminorticksvisible = true, yminorgridvisible = true)
Axis(f[1, 1]; yminorticks = IntervalsBetween(2), kwargs...)
Axis(f[1, 2]; yminorticks = IntervalsBetween(5), kwargs...)
Axis(f[1, 3]; yminorticks = [1, 2, 3, 4], kwargs...)

f
24e88fd

yminorticksize

Значение по умолчанию: 3.0

Размер тика для y младших тиков

yminorticksvisible

Значение по умолчанию: false

Определяет, видны ли незначительные отметки на оси y

yminortickwidth

Значение по умолчанию: 1.0

Ширина тика из y второстепенных тиков

ypankey

Значение по умолчанию: Makie.Keyboard.y

Клавиша для ограничения панорамирования в направлении y.

ypanlock

Значение по умолчанию: false

Блокирует интерактивное панорамирование в направлении y.

yrectzoom

Значение по умолчанию: true

Определяет, влияет ли масштабирование прямоугольника на размер y.

yreversed

Значение по умолчанию: false

Определяет, движется ли ось y вверх (false) или вниз (true).

yscale

Значение по умолчанию: identity

Функция масштабирования по оси y.

Может быть любой обратимой функцией, некоторые предопределенные параметры identity, log, log2, log10, sqrt, logit, Makie.pseudolog10 и Makie.Symlog10. Чтобы использовать пользовательскую функцию, вы должны определить соответствующие методы для Makie.inverse_transform, Makie.defaultlimits и Makie.defined_interval.

Если функция масштабирования задана только на ограниченном интервале, ни один объект построения не может иметь исходных данных, лежащих за пределами этого диапазона. Например, значение y не может быть меньше или равно 0, если для параметра log выбрано значение yscale. Важны исходные данные, а не выбранные пользователем ограничения, поскольку все данные должны быть преобразованы, независимо от того, находятся ли они внутри или за пределами текущих ограничений.

Масштаб оси может влиять на поиск и форматирование отметок в зависимости от значений yticks и ytickformat.

using CairoMakie
f = Figure()

for (i, scale) in enumerate([identity, log10, log2, log, sqrt, Makie.logit])
    row, col = fldmod1(i, 3)
    Axis(f[row, col], yscale = scale, title = string(scale),
        yminorticksvisible = true, yminorgridvisible = true,
        yminorticks = IntervalsBetween(5))

    lines!(range(0.01, 0.99, length = 200))
end

f
b2f8192

using CairoMakie
f = Figure()

ax1 = Axis(f[1, 1],
    yscale = Makie.pseudolog10,
    title = "Pseudolog scale",
    yticks = [-100, -10, -1, 0, 1, 10, 100]
)

ax2 = Axis(f[2, 1],
    yscale = Makie.Symlog10(10.0),
    title = "Symlog10 with linear scaling between -10 and 10",
    yticks = [-100, -10, 0, 10, 100]
)

for ax in [ax1, ax2]
    lines!(ax, -100:0.1:100)
end

f
7a66135

ytickalign

Значение по умолчанию: 0.0

Выравнивание меток ytick относительно оси вращения (0 = наружу, 1 = внутрь).

ytickcolor

Значение по умолчанию: RGBf(0, 0, 0)

Цвет меток от наклеек.

ytickformat

Значение по умолчанию: Makie.automatic

Форматировщик для отметок на оси y.

Обычно значения отметок сначала определяются с помощью Makie.get_tickvalues, после чего вызывается Makie.get_ticklabels(ytickformat, ytickvalues) . Если определен специальный метод, значения отметок и метки могут быть определены совместно с помощью Makie.get_ticks вместо. Проверьте строку документации на наличие yticks для получения дополнительной информации.

Обычными объектами, которые можно использовать для форматирования отметок, являются:

  • A Function , который принимает вектор чисел и возвращает вектор меток. Меткой может быть все, что может быть нанесено с помощью text примитивный.

  • A String , который используется в качестве спецификатора формата для Format.jl. Например, "{:.2f}kg" форматирует числа, округленные до двух десятичных знаков, и с суффиксом kg.

using CairoMakie
f = Figure()

Axis(f[1, 1], ytickformat = values -> ["$(value)kg" for value in values])
Axis(f[1, 2], ytickformat = "{:.2f}ms")
Axis(f[1, 3], ytickformat = values -> [L"\sqrt{%$(value^2)}" for value in values])
Axis(f[1, 4], ytickformat = values -> [rich("$value", superscript("XY", color = :red))
                                       for value in values])

f
9390b82

yticklabelalign

Значение по умолчанию: Makie.automatic

Горизонтальное и вертикальное выравнивание меток yticklabels.

yticklabelcolor

Значение по умолчанию: @inherit :textcolor :black

Цвет надписей на стикерах.

yticklabelfont

Значение по умолчанию: :regular

Семейство шрифтов yticklabels.

yticklabelpad

Значение по умолчанию: 4.0

Расстояние между символами yticks и yticklabels.

using CairoMakie
    f = Figure()

    Axis(f[1, 1], yticklabelpad = 0, title = "yticklabelpad = 0")
    Axis(f[2, 1], yticklabelpad = 5, title = "yticklabelpad = 5")
    Axis(f[3, 1], yticklabelpad = 15, title = "yticklabelpad = 15")

    f
6df6799

yticklabelrotation

Значение по умолчанию: 0.0

Вращение меток ytick в радианах против часовой стрелки.

yticklabelsize

Значение по умолчанию: @inherit :fontsize 16.0f0

Размер шрифта меток yticklabels.

yticklabelspace

Значение по умолчанию: Makie.automatic

Пространство, зарезервированное для меток yticklabels. Может быть установлено в значение Makie.automatic для автоматического определения необходимого пространства, :max_auto может увеличиваться только до текущих отметок или определенного значения.

using CairoMakie
    f = Figure()

    Axis(f[1, 1], ylabel = "Y Label", yticklabelspace = 0.0, title = "yticklabelspace = 0.0")
    Axis(f[2, 1], ylabel = "Y Label", yticklabelspace = 30.0, title = "yticklabelspace = 30.0")
    Axis(f[3, 1], ylabel = "Y Label", yticklabelspace = Makie.automatic, title = "yticklabelspace = automatic")

    f
30778f0

yticklabelsvisible

Значение по умолчанию: true

Определяет, видны ли метки yticklabels.

yticks

Значение по умолчанию: Makie.automatic

Определяет, какие числовые значения тиков вычисляются для оси y.

Чтобы определить значения тиков и метки, сначала выполните следующие действия Makie.get_ticks(yticks, yscale, ytickformat, ymin, ymax). Если для текущей комбинации отметок, масштабирования и форматирования не определен специальный метод, который одновременно возвращает как значения отметок, так и метки, то числовые значения отметок будут определены с помощью ytickvalues = Makie.get_tickvalues(yticks, yscale, ymin, ymax) , после чего метки будут определены с помощью Makie.get_ticklabels(ytickformat, ytickvalues).

Наиболее распространенными объектами, которые могут использоваться в качестве отметок, являются:

  • Вектор чисел

  • Кортеж с двумя векторами (numbers, labels) где labels могут быть любыми объектами, которые text могут обрабатываться.

  • WilkinsonTicks, средство поиска отметок по умолчанию для линейных отметок

  • LinearTicks, альтернативное средство поиска отметок для линейных отметок

  • LogTicks, оболочка, которая применяет любое другое средство поиска отметок в оболочке к логарифмически преобразованным значениям

  • MultiplesTicks, для поиска отметок, кратных заданному значению, например π

using CairoMakie
fig = Figure()
Axis(fig[1, 1], yticks = 1:10)
Axis(fig[1, 2], yticks = (1:2:9, ["A", "B", "C", "D", "E"]))
Axis(fig[1, 3], yticks = WilkinsonTicks(5))
fig
9cc35e4

yticksize

Значение по умолчанию: 5.0

Размер отметок от наклеек.

yticksmirrored

Значение по умолчанию: false

Определяет, отображаются ли отметки y и второстепенные отметки на другой стороне оси.

using CairoMakie
f = Figure()

Axis(f[1, 1], yticksmirrored = false, yminorticksvisible = true)
Axis(f[2, 1], yticksmirrored = true, yminorticksvisible = true)

f
69d79b5

yticksvisible

Значение по умолчанию: true

Определяет, видны ли метки ytick.

ytickwidth

Значение по умолчанию: 1.0

Ширина меток ytick.

ytrimspine

Значение по умолчанию: false

Если true, ограничивает протяженность корешка по оси y самыми внешними основными делениями. Также может быть установлено значение a Tuple{Bool,Bool} для управления каждой стороной отдельно.

using CairoMakie
f = Figure()

ax1 = Axis(f[1, 1], ytrimspine = false)
ax2 = Axis(f[1, 2], ytrimspine = true)
ax3 = Axis(f[1, 3], ytrimspine = (true, false))
ax4 = Axis(f[1, 4], ytrimspine = (false, true))

for ax in [ax1, ax2, ax3, ax4]
    ax.xgridvisible = false
    ax.ygridvisible = false
    ax.rightspinevisible = false
    ax.topspinevisible = false
    ylims!(ax, 0.5, 5.5)
end

f
7dfc3d7

yzoomkey

Значение по умолчанию: Makie.Keyboard.y

Клавиша для ограничения масштабирования в направлении y.

yzoomlock

Значение по умолчанию: false

Блокирует интерактивное масштабирование в направлении y.

zoombutton

Значение по умолчанию: true

Кнопка, которую необходимо нажать, чтобы разрешить масштабирование прокрутки.