text
|
Страница в процессе перевода. |
#
MakieCore.text — Function
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
Пространство маркеров — данные
Для текста, измерения которого имеют смысл в пространстве данных, задайте 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
Выравнивание по главной оси
Текст может быть выровнен по горизонтали с помощью :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()
Выравнивание по поперечной оси
По умолчанию выравнивание многострочного текста по поперечной оси следует за выравниванием по главной оси. Текст, выровненный по левому краю главной оси, также выравнивается по левому краю поперечной оси. Это поведение можно переопределить с помощью атрибута 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
Смещение
Атрибут смещения можно использовать для смещения текста относительно его позиции. Это особенно удобно при использовании 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
Относительное пространство
По умолчанию для 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
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()
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
Форматированный текст
Используя форматированный текст можно строить текст, части которого имеют разные цвета или шрифты, а также располагать разделы в виде нижних и верхних индексов. Подобные объекты форматированного текста можно создавать с помощью функций 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
Настройка смещений
Иногда при использовании обычного и курсивного шрифтов рядом друг с другом промежутки между глифами получаются слишком узкими или слишком широкими. Сдвинуть глифы на величину, пропорциональную размеру шрифта, можно с помощью значения 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
Атрибуты
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).
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.
markerspace
Значение по умолчанию: :pixel
Задает пространство, в котором fontsize акты. Видеть Makie.spaces() для получения возможных вводных данных.
model
Значение по умолчанию: automatic
Задает матрицу модели для построения графика. Это отменяет корректировки, сделанные с помощью translate!, rotate! и scale!.
overdraw
Значение по умолчанию: false
Определяет, будет ли график отображаться поверх других графиков. В частности, это означает игнорирование проверок глубины в GL-интерфейсах
position
Значение по умолчанию: (0.0, 0.0)
Устаревший: определяет положение текста. Используйте позиционный аргумент для text вместо.
space
Значение по умолчанию: :data
задает область преобразования для прямоугольника, охватывающего участок. Видеть Makie.spaces() для получения возможных вводных данных.
ssao
Значение по умолчанию: false
Настраивает, будет ли отображаться график с помощью ssao (сглаживания окружающего пространства экрана). Обратите внимание, что это имеет смысл только для 3D-графиков и применимо только к fxaa = true.
text
Значение по умолчанию: ""
Указывает один фрагмент текста или вектор текстов для отображения, где число должно соответствовать количеству заданных позиций. Makie поддерживает String который используется для всего обычного текста и LaTeXString который отображает математические выражения с использованием MathTeXEngine.jl.
transform_marker
Значение по умолчанию: false
Определяет, применяется ли матрица модели (без перевода) к самому символу, а не только к позициям. (Если это верно, scale! и rotate! это повлияет на текстовые символы.)