Axis
|
Страница в процессе перевода. |
Построение графика по оси
С Axis можно использовать все обычные изменяемые функции построения двумерных графиков. Эти функции возвращают созданный объект графика. Если опустить аргумент ax, то в качестве оси current_axis() обычно выступает ось, которая была создана последней.
lineobject = lines!(ax, 0..10, sin, color = :red)
scatobject = scatter!(0:0.5:10, cos, color = :orange)
f
Удаление графиков
Объект графика можно удалить напрямую с помощью 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
Скрытие линий и дополнительных элементов оси
Вы можете скрыть все элементы оси вручную, задав их конкретным атрибутам видимости значение false, например xticklabelsvisible, но это может быть утомительной задачей. Однако можно воспользоваться рядом вспомогательных функций.
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
Чтобы скрыть дополнительные элементы, используйте 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
Связывание осей
Оси можно связывать друг с другом. Каждая ось просто отслеживает список других осей, который обновляется при изменении самой оси. Измерения 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
Выравнивание меток соседних осей
При размещении осей с разными делениями друг с другом иногда желательно визуально выровнять метки этих осей. По умолчанию под метки делений выделено минимальное место. Это значение можно зафиксировать с помощью функций tight_xticklabel_spacing!, tight_yticklabel_spacing! либо tight_ticklabel_spacing! для обеих меток.
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
Чтобы выровнять метки, задайте атрибутам 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
Создание двойниковой оси
В настоящее время нет специальной функции, но вы можете просто добавить ось поверх другой, а затем скрыть все, кроме второй оси.
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
Взаимодействие с осями
Ось поддерживает несколько предопределенных механизмов взаимодействия.
Прокрутка масштаба
Вы можете изменять масштаб оси, используя прокрутку для его увеличения и уменьшения. Если во время прокрутки нажать 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), которые вызываются при регистрации и отмене регистрации, соответственно.
Атрибуты
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
autolimitaspect
Значение по умолчанию: nothing
Если autolimitaspect если задано значение, пределы оси будут автоматически скорректированы таким образом, чтобы отношение пределов к размеру оси было равно этому числу.
Например, если размер оси равен 100 x 200, то с помощью autolimitaspect = 1 автолимиты также будут иметь соотношение 1 к 2. Параметр autolimitaspect = 1 является дополнением к параметру aspect = AxisAspect(1), но при этом aspect изменяет размер оси, autolimitaspect изменяет пределы для достижения желаемого соотношения.
|
Warning |
Вы можете скрыть метки или исправить `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
backgroundcolor
Значение по умолчанию: :white
using CairoMakie
f = Figure()
ax1 = Axis(f[1, 1])
ax2 = Axis(f[1, 2], backgroundcolor = :gray80)
f
halign
Значение по умолчанию: :center
Горизонтальное выравнивание оси в пределах предполагаемого ограничивающего прямоугольника.
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
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
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
titlealign
Значение по умолчанию: :center
Выравнивание заголовка по горизонтали. Субтитры всегда отображаются в соответствии с этим параметром выравнивания.
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
valign
Значение по умолчанию: :center
Вертикальное выравнивание оси в пределах предполагаемой ограничивающей рамки.
xautolimitmargin
Значение по умолчанию: (0.05f0, 0.05f0)
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
xaxisposition
Значение по умолчанию: :bottom
using CairoMakie
f = Figure()
Axis(f[1, 1], xaxisposition = :bottom)
Axis(f[1, 2], xaxisposition = :top)
f
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
xlabelpadding
Значение по умолчанию: 3.0
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
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
xminorticksvisible
Значение по умолчанию: false
Определяет, видны ли незначительные отметки на оси x
xpankey
Значение по умолчанию: Makie.Keyboard.x
Клавиша для ограничения панорамирования в направлении 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
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
xtickalign
Значение по умолчанию: 0.0
Выравнивание меток xtick относительно оси вращения (0 = наружу, 1 = внутрь).
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
xticklabelalign
Значение по умолчанию: Makie.automatic
Горизонтальное и вертикальное выравнивание меток xticklabels.
xticklabelpad
Значение по умолчанию: 2.0
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
xticklabelrotation
Значение по умолчанию: 0.0
Вращение меток 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
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
xticksmirrored
Значение по умолчанию: false
using CairoMakie
f = Figure()
Axis(f[1, 1], xticksmirrored = false, xminorticksvisible = true)
Axis(f[1, 2], xticksmirrored = true, xminorticksvisible = true)
f
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
xzoomkey
Значение по умолчанию: Makie.Keyboard.x
Клавиша для ограничения масштабирования в направлении x.
yautolimitmargin
Значение по умолчанию: (0.05f0, 0.05f0)
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
yaxisposition
Значение по умолчанию: :left
using CairoMakie
f = Figure()
Axis(f[1, 1], yaxisposition = :left)
Axis(f[2, 1], yaxisposition = :right)
f
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
ylabelpadding
Значение по умолчанию: 5.0
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
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
yminorticksvisible
Значение по умолчанию: false
Определяет, видны ли незначительные отметки на оси y
ypankey
Значение по умолчанию: Makie.Keyboard.y
Клавиша для ограничения панорамирования в направлении y.
yrectzoom
Значение по умолчанию: true
Определяет, влияет ли масштабирование прямоугольника на размер y.
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
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
ytickalign
Значение по умолчанию: 0.0
Выравнивание меток ytick относительно оси вращения (0 = наружу, 1 = внутрь).
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
yticklabelalign
Значение по умолчанию: Makie.automatic
Горизонтальное и вертикальное выравнивание меток yticklabels.
yticklabelpad
Значение по умолчанию: 4.0
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
yticklabelrotation
Значение по умолчанию: 0.0
Вращение меток ytick в радианах против часовой стрелки.
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
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
yticksmirrored
Значение по умолчанию: false
using CairoMakie
f = Figure()
Axis(f[1, 1], yticksmirrored = false, yminorticksvisible = true)
Axis(f[2, 1], yticksmirrored = true, yminorticksvisible = true)
f
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