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

text

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

text(positions; text, kwargs...)
text(x, y; text, kwargs...)
text(x, y, z; text, kwargs...)

Выводит один или несколько фрагментов текста, переданных через именованный аргумент text. Text использует типаж конвертации PointBased.

Тип графика

Псевдоним типа графика для функции text — Text.

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

По умолчанию текст строится с помощью markerspace = :pixel, что означает, что размер текста интерпретируется в пикселях. (Пространство позиции текста определяется атрибутом space.)

Ограничивающий прямоугольник текста при использовании markerspace = :pixel будет включать все точки данных или все точки привязки текста, но не сам текст, поскольку его размер зависит от текущей проекции оси, в которой он находится. Это также означает, что autolimits! может обрезать текст, поскольку глифы не имеют значимого размера в координатах данных (размер не зависит от уровня масштабирования), и вам придется вручную размещать текст или устанавливать ограничения данных так, чтобы он был полностью виден.

Можно построить либо одну строку с одной позицией, либо вектор строк с вектором позиций.

using CairoMakie
f = Figure()

Axis(f[1, 1], aspect = DataAspect(), backgroundcolor = :gray50)

scatter!(Point2f(0, 0))
text!(0, 0, text = "center", align = (:center, :center))

circlepoints = [(cos(a), sin(a)) for a in LinRange(0, 2pi, 16)[1:end-1]]
scatter!(circlepoints)
text!(
    circlepoints,
    text = "this is point " .* string.(1:15),
    rotation = LinRange(0, 2pi, 16)[1:end-1],
    align = (:right, :baseline),
    color = cgrad(:Spectral)[LinRange(0, 1, 15)]
)

f
797648d

Пространство маркеров — данные

Для текста, измерения которого имеют смысл в пространстве данных, задайте markerspace = :data. Это означает, что ограничивающий прямоугольник текста в координатах данных будет включать каждый глиф.

using CairoMakie
f = Figure()
LScene(f[1, 1])

text!(
    [Point3f(0, 0, i/2) for i in 1:7],
    text = fill("Makie", 7),
    rotation = [i / 7 * 1.5pi for i in 1:7],
    color = [cgrad(:viridis)[x] for x in LinRange(0, 1, 7)],
    align = (:left, :baseline),
    fontsize = 1,
    markerspace = :data
)

f
26d1d7d

Выравнивание по главной оси

Текст может быть выровнен по горизонтали с помощью :left, :center, :right и по вертикали с помощью :bottom, :baseline, :center, :top.

using CairoMakie
aligns = [(h, v) for v in [:bottom, :baseline, :center, :top]
                 for h in [:left, :center, :right]]
x = repeat(1:3, 4)
y = repeat(1:4, inner = 3)
scatter(x, y)
text!(x, y, text = string.(aligns), align = aligns)
current_figure()
32a3c6b

Выравнивание по поперечной оси

По умолчанию выравнивание многострочного текста по поперечной оси следует за выравниванием по главной оси. Текст, выровненный по левому краю главной оси, также выравнивается по левому краю поперечной оси. Это поведение можно переопределить с помощью атрибута justification.

using CairoMakie
scene = Scene(camera = campixel!, size = (800, 800))

points = [Point(x, y) .* 200 for x in 1:3 for y in 1:3]
scatter!(scene, points, marker = :circle, markersize = 10px)

symbols = (:left, :center, :right)

for ((justification, halign), point) in zip(Iterators.product(symbols, symbols), points)

    t = text!(scene,
        point,
        text = "a\nshort\nparagraph",
        color = (:black, 0.5),
        align = (halign, :center),
        justification = justification)

    bb = boundingbox(t, :pixel)
    wireframe!(scene, bb, color = (:red, 0.2))
end

for (p, al) in zip(points[3:3:end], (:left, :center, :right))
    text!(scene, p .+ (0, 80), text = "align :" * string(al),
        align = (:center, :baseline))
end

for (p, al) in zip(points[7:9], (:left, :center, :right))
    text!(scene, p .+ (80, 0), text = "justification\n:" * string(al),
        align = (:center, :top), rotation = pi/2)
end

scene
5db27a7

Смещение

Атрибут смещения можно использовать для смещения текста относительно его позиции. Это особенно удобно при использовании space = :pixel, например для размещения текста вместе с гистограммами. Можно указать конец гистограммы в координатах данных, а затем сместить текст немного влево.

using CairoMakie
f = Figure()

horsepower = [52, 78, 80, 112, 140]
cars = ["Kia", "Mini", "Honda", "Mercedes", "Ferrari"]

ax = Axis(f[1, 1], xlabel = "horse power")
tightlimits!(ax, Left())
hideydecorations!(ax)

barplot!(horsepower, direction = :x)
text!(Point.(horsepower, 1:5), text = cars, align = (:right, :center),
    offset = (-20, 0), color = :white)

f
fda8b15

Относительное пространство

По умолчанию для text задано space = :data, что означает, что конечное положение зависит от ограничений и масштабирования оси. Однако бывает полезно разместить текст относительно самой оси независимо от масштаба. При space = :relative позиция (0, 0) относится к левому нижнему углу, а (1, 1) — к правому верхнему углу Scene, в котором находится объект графика (для Axis это эквивалентно области построения, которая реализуется с помощью Scene).

Распространенным сценарием является размещение меток внутри осей:

using CairoMakie
f = Figure()

ax1 = Axis(f[1, 1], limits = (1, 2, 3, 4))
ax2 = Axis(f[1, 2], width = 300, limits = (5, 6, 7, 8))
ax3 = Axis(f[2, 1:2], limits = (9, 10, 11, 12))

for (ax, label) in zip([ax1, ax2, ax3], ["A", "B", "C"])
    text!(
        ax, 0, 1,
        text = label,
        font = :bold,
        align = (:left, :top),
        offset = (4, -2),
        space = :relative,
        fontsize = 24
    )
end

f
e17d2fb

MathTeX

Makie может отрисовывать строки LaTeX из пакета LaTeXStrings.jl с использованием MathTeXEngine.jl.

using CairoMakie
lines(0.5..20, x -> sin(x) / sqrt(x), color = :black)
text!(7, 0.38, text = L"\frac{\sin(x)}{\sqrt{x}}", color = :black)
current_figure()
4fb9e9e

L-строки можно передавать во многие объекты, использующие текст, например в качестве меток в условных обозначениях.

using CairoMakie
f = Figure()
ax = Axis(f[1, 1])

lines!(0..10, x -> sin(3x) / (cos(x) + 2),
    label = L"\frac{\sin(3x)}{\cos(x) + 2}")
lines!(0..10, x -> sin(x^2) / (cos(sqrt(x)) + 2),
    label = L"\frac{\sin(x^2)}{\cos(\sqrt{x}) + 2}")

Legend(f[1, 2], ax)

f
1715f97

Форматированный текст

Используя форматированный текст можно строить текст, части которого имеют разные цвета или шрифты, а также располагать разделы в виде нижних и верхних индексов. Подобные объекты форматированного текста можно создавать с помощью функций rich, superscript, subscript, subsup и left_subsup, каждая из которых создает объекты RichText.

Каждая из этих функций принимает переменное количество аргументов (кроме subsup и left_subsup, которые принимают ровно два аргумента), каждый из которых может быть String или RichText. Каждая из них также может принимать именованные аргументы, такие как color или font, чтобы задать эти атрибуты для данной части. Настройки верхнего уровня для шрифта, цвета и т. д., как обычно, берутся из атрибутов text.

using CairoMakie
f = Figure(fontsize = 30)
Label(
    f[1, 1],
    rich(
        "H", subscript("2"), "O is the formula for ",
        rich("water", color = :cornflowerblue, font = :italic)
    )
)

str = "A BEAUTIFUL RAINBOW"
rainbow = cgrad(:rainbow, length(str), categorical = true)
fontsizes = 30 .+ 10 .* sin.(range(0, 3pi, length = length(str)))

rainbow_chars = map(enumerate(str)) do (i, c)
    rich("$c", color = rainbow[i], fontsize = fontsizes[i])
end

Label(f[2, 1], rich(rainbow_chars...), font = :bold)

Label(f[3, 1], rich("Chemists use notations like ", left_subsup("92", "238"), "U or PO", subsup("4", "3−")))

f
243e14a

Настройка смещений

Иногда при использовании обычного и курсивного шрифтов рядом друг с другом промежутки между глифами получаются слишком узкими или слишком широкими. Сдвинуть глифы на величину, пропорциональную размеру шрифта, можно с помощью значения offset для форматированного текста.

using CairoMakie
f = Figure(fontsize = 30)
Label(
    f[1, 1],
    rich(
        "ITALIC",
        superscript("Regular without x offset", font = :regular),
        font = :italic
    )
)

Label(
    f[2, 1],
    rich(
        "ITALIC",
        superscript("Regular with x offset", font = :regular, offset = (0.15, 0)),
        font = :italic
    )
)

f
c80d8dd

Атрибуты

align

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

Устанавливает выравнивание строки по вертикали. position. Использование :left, :center, :right, :top, :bottom, :baseline или дроби.

alpha

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

Буквенное значение цветовой карты или атрибута color. Несколько буквенных обозначений, как в plot(alpha=0.2, color=(:red, 0.5), будет умножено.

clip_planes

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

Плоскости обрезки позволяют выполнять обрезку в трехмерном пространстве. Вы можете задать вектор длиной до 8 Plane3f Здесь вы можете задать плоскости, за которыми участки будут обрезаны (т.е. станут невидимыми). По умолчанию плоскости клипа наследуются от родительского графика или сцены. Вы можете удалить родительский элемент clip_planes проходя мимо Plane3f[].

color

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

Задает цвет текста. Для каждого символа можно задать один цвет, передав Vector{<:Colorant}, или один краситель для всего текста. Если color - это вектор чисел, то для сопоставления чисел с цветами используются аргументы colormap.

colormap

Значение по умолчанию: @inherit colormap :viridis

Устанавливает цветовую схему, которая выбирается для числовых значений. colors. PlotUtils.cgrad(...), Makie.Reverse(any_colormap) также можно использовать любой символ из ColorBrewer или PlotUtils. Чтобы просмотреть все доступные цветовые градиенты, вы можете позвонить по телефону Makie.available_gradients().

colorrange

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

Значения, представляющие начальную и конечную точки colormap.

colorscale

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

Функция преобразования цвета. Может быть любой функцией, но хорошо работает только в сочетании с Colorbar для identity, log, log2, log10, sqrt, logit, Makie.pseudolog10 и Makie.Symlog10.

depth_shift

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

настраивает значение глубины участка после всех других преобразований, т.е. в пространстве клипа, где 0 <= depth <= 1. This only applies to GLMakie and WGLMakie and can be used to adjust render order (like a tunable overdraw).

font

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

Задает шрифт. Может быть Symbol, который будет найден в словаре fonts, или String, указывающим (частичное) имя шрифта или путь к файлу шрифта.

fonts

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

Используется в качестве словаря для поиска шрифтов, указанных параметром Symbol, например, :regular, :bold или :italic.

fontsize

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

Размер шрифта в единицах измерения в зависимости от markerspace.

fxaa

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

настраивает, будет ли отображаться график с помощью fxaa (сглаживание, только для GLMakie).

glowcolor

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

Устанавливает цвет эффекта свечения вокруг текста.

glowwidth

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

Устанавливает размер эффекта свечения вокруг текста.

highclip

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

Цвет для любого значения, превышающего цветовой диапазон.

inspectable

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

Определяет, должен ли этот сюжет отображаться пользователем DataInspector. Значение по умолчанию зависит от темы родительской сцены.

inspector_clear

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

Устанавливает функцию обратного вызова (inspector, plot) -> ...</span> для очистки пользовательских индикаторов в DataInspector.

inspector_hover

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

Устанавливает функцию обратного вызова (inspector, plot, index) -> ... которая заменяет функцию по умолчанию show_data методы.

inspector_label

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

Устанавливает функцию обратного вызова (plot, index, position) -> string , которая заменяет метку по умолчанию, сгенерированную DataInspector.

justification

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

Устанавливает выравнивание текста по его ограничивающей рамке. Может быть :left, :center, :right или дробь. По умолчанию используется выравнивание по горизонтали в align.

lineheight

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

Множитель высоты линии.

lowclip

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

Цвет для любого значения ниже цветового диапазона.

markerspace

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

Задает пространство, в котором fontsize акты. Видеть Makie.spaces() для получения возможных вводных данных.

model

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

Задает матрицу модели для построения графика. Это отменяет корректировки, сделанные с помощью translate!, rotate! и scale!.

nan_color

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

Цвет для значений NaN.

offset

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

Смещение текста от заданной позиции в markerspace единицы.

overdraw

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

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

position

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

Устаревший: определяет положение текста. Используйте позиционный аргумент для text вместо.

rotation

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

Поворачивает текст вокруг заданного положения

space

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

задает область преобразования для прямоугольника, охватывающего участок. Видеть Makie.spaces() для получения возможных вводных данных.

ssao

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

Настраивает, будет ли отображаться график с помощью ssao (сглаживания окружающего пространства экрана). Обратите внимание, что это имеет смысл только для 3D-графиков и применимо только к fxaa = true.

strokecolor

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

Задает цвет контура вокруг маркера.

strokewidth

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

Задает ширину контура вокруг маркера.

text

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

Указывает один фрагмент текста или вектор текстов для отображения, где число должно соответствовать количеству заданных позиций. Makie поддерживает String который используется для всего обычного текста и LaTeXString который отображает математические выражения с использованием MathTeXEngine.jl.

transform_marker

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

Определяет, применяется ли матрица модели (без перевода) к самому символу, а не только к позициям. (Если это верно, scale! и rotate! это повлияет на текстовые символы.)

transformation

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

Документация недоступна.

transparency

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

Настраивает прозрачность графика. В GLMakie transparency = true в результате используется прозрачность, не зависящая от порядка.

visible

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

Определяет, будет ли отображаться график или нет.

word_wrap_width

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

Задает ограничение по ширине строки для текста. Если слово превышает это ограничение, перед ним вставляется новая строка. Отрицательные числа отключают перенос слов.