CairoMakie
|
Страница в процессе перевода. |
CairoMakie использует Cairo.jl для рисования векторной графики в SVG и PDF. Этот бэкенд следует использовать, если нужно получить графики наивысшего качества для публикации, так как процесс отрисовки в бэкендах GL основан на растровых изображениях и ориентирован больше на скорость, чем на точность пикселей.
Активация и настройка экрана
Чтобы активировать бэкенд, вызовите CairoMakie.activate!() со следующими параметрами.
#
CairoMakie.activate! — Function
CairoMakie.activate!(; screen_config...)
Устанавливает CairoMakie в качестве текущего активного бэкенда, а также позволяет быстро задать screen_config. Обратите внимание, что screen_config также можно задать на постоянной основе с помощью Makie.set_theme!(CairoMakie=(screen_config...,)).
Аргументы, которые можно передавать через screen_config:
-
px_per_unit = 2.0 -
pt_per_unit = 0.75 -
antialias::Union{Symbol, Int} = :best: метод сглаживания, используемый Cairo для рисования. Возможные значения:[:best => Cairo.ANTIALIAS_BEST, :good => Cairo.ANTIALIAS_GOOD, :subpixel => Cairo.ANTIALIAS_SUBPIXEL, :none => Cairo.ANTIALIAS_NONE]. -
visible::Bool: при значении true отрисовываемые выходные данные открываются в браузере или средстве просмотра изображений. -
pdf_version::String = nothing: версия выходных файлов PDF. Возможные значения:"1.4","1.5","1.6","1.7"илиnothing(в этом случае ограничений на версию PDF нет).
Тип встроенного графика
Вы можете выбрать тип графика, который будет отображаться как встроенный, например, в VSCode, Pluto.jl или любой другой среде, задав его с помощью функции activate!.
CairoMakie.activate!(type = "png")
CairoMakie.activate!(type = "svg")
Z-порядок
CairoMakie является двухмерным бэкендом, поэтому в нем не реализована концепция z-отсечения и трехмерные возможности весьма ограничены. Значения z трехмерных графиков не действуют и проецируются на плоскость холста. Z-слои аппроксимируются путем сортировки всех объектов графика по значению их перемещения по оси z перед отрисовкой, затем по родительской сцене и, наконец, по порядку вставки. Поэтому, если нужно нарисовать какой-либо объект поверх другого, но он оказывается ниже, попробуйте переместить его вперед с помощью translate!(obj, 0, 0, some_positive_z_value).
Выборочная растеризация
Задав атрибут rasterize графика, можно сообщить CairoMakie, что этот график необходимо растеризовать при сохранении, даже если он сохраняется в векторном бэкенде. Это может быть очень полезно для больших сеток, поверхностей или даже тепловых карт, если они расположены на нерегулярной сетке.
Допустим, у вас есть объект Plot plt. Вы можете установить plt.rasterize = true для простой растеризации либо установить plt.rasterize = scale::Int, где scale представляет коэффициент масштабирования для поверхности изображения.
Например, если размер сцены равен (800, 600), то при установке scale=2 растровое изображение, встроенное в векторную графику, будет иметь разрешение (1600, 1200).
Чтобы отключить эту растеризацию, установите plt.rasterize = false.
using CairoMakie
v = rand(10,2)
scatter(v[:,1], v[:,2], rasterize = true, markersize = 30.0)
При увеличении масштаба изображение станет сильно пикселизированным. Это связано с тем, что плотность растеризации установлена на уровне 1 px на pt. Если задать rasterize=10, оно станет гораздо более гладким.
using CairoMakie
v = rand(10,2)
scatter(v[:,1], v[:,2], rasterize = 10, markersize = 30.0)
Версия PDF
Версию выходных PDF-файлов можно ограничить с помощью аргумента pdf_version конфигурации экрана. Для удобства его также можно передать в качестве аргумента функции save.
using CairoMakie
fig = Figure()
save("figure.pdf", fig, pdf_version="1.4")