contourf
|
Страница в процессе перевода. |
#
Makie.contourf — Function
contourf(xs, ys, zs; kwargs...)
Строит контур с заливкой в соответствии с информацией о высоте в zs в позициях сетки по горизонтали xs и позициях сетки по вертикали ys.
Тип графика
Псевдоним типа графика для функции contourf — Contourf.
using CairoMakie
using DelimitedFiles
volcano = readdlm(Makie.assetpath("volcano.csv"), ',', Float64)
f = Figure()
Axis(f[1, 1])
co = contourf!(volcano, levels = 10)
Colorbar(f[1, 2], co)
f
using CairoMakie
using DelimitedFiles
volcano = readdlm(Makie.assetpath("volcano.csv"), ',', Float64)
f = Figure()
ax = Axis(f[1, 1])
co = contourf!(volcano,
levels = range(100, 180, length = 10),
extendlow = :cyan, extendhigh = :magenta)
tightlimits!(ax)
Colorbar(f[1, 2], co)
f
using CairoMakie
using DelimitedFiles
volcano = readdlm(Makie.assetpath("volcano.csv"), ',', Float64)
f = Figure()
ax = Axis(f[1, 1])
co = contourf!(volcano,
levels = range(100, 180, length = 10),
extendlow = :auto, extendhigh = :auto)
tightlimits!(ax)
Colorbar(f[1, 2], co)
f
Относительный режим
Иногда бывает полезно отбросить одну часть диапазона значений, обычно в сторону внешней границы. Вместо того чтобы указывать включаемые уровни вручную, можно задать атрибуту mode значение :relative и указать уровни от 0 до 1 относительно текущего минимального и максимального значений.
using CairoMakie
using DelimitedFiles
volcano = readdlm(Makie.assetpath("volcano.csv"), ',', Float64)
f = Figure(size = (800, 400))
Axis(f[1, 1], title = "Relative mode, drop lowest 30%")
contourf!(volcano, levels = 0.3:0.1:1, mode = :relative)
Axis(f[1, 2], title = "Normal mode")
contourf!(volcano, levels = 10)
f
Криволинейные сетки
contourf также поддерживает криволинейные сетки, где x и y являются матрицами того же размера, что и z. Это аналогично входным данным, принимаемым surface.
Давайте заключим регулярную сетку x и y в оболочку с помощью некоторой нелинейной функции и построим ее контуры:
using CairoMakie
x = -10:10
y = -10:10
# Криволинейная сетка:
xs = [x + 0.01y^3 for x in x, y in y]
ys = [y + 10cos(x/40) for x in x, y in y]
# Теперь для простоты рассчитаем значения `zs`
# как радиус от центра сетки (0, 10).
zs = sqrt.(xs .^ 2 .+ (ys .- 10) .^ 2)
# Мы можем использовать методы нахождения делений Makie для получения уровней контуров:
levels = Makie.get_tickvalues(Makie.LinearTicks(7), extrema(zs)...)
# и теперь строим график.
f = Figure()
ax1 = Axis(f[1, 1])
ctrf1 = contourf!(ax1, x, y, zs; levels = levels)
ax2 = Axis(f[1, 2])
ctrf2 = contourf!(ax2, xs, ys, zs; levels = levels)
f
Атрибуты
clip_planes
Значение по умолчанию: automatic
плоскости отсечения позволяют выполнять отсечение в трехмерном пространстве. Здесь можно указать вектор из 8 плоскостей Plane3f, за которыми графики будут отсечены (т. е. станут невидимыми). По умолчанию плоскости отсечения наследуются от родительского графика или сцены. Чтобы удалить родительский объект clip_planes, передайте Plane3f[].
depth_shift
Значение по умолчанию: 0.0
корректирует значение глубины графика после всех остальных преобразований, т. е. в пространстве отсечения, где 0 <= depth <= 1. Применимо только к GLMakie и WGLMakie и может использоваться для настройки порядка отрисовки (настраиваемая перерисовка).
extendhigh
Значение по умолчанию: nothing
если в режиме :normal необходимо отобразить полосу от верхнего края до Inf, присвойте extendhigh значение :auto, чтобы у продолжения был тот же цвет, что и у последнего уровня, либо укажите цвет напрямую (по умолчанию nothing означает отсутствие продолжающей полосы).
extendlow
Значение по умолчанию: nothing
если в режиме :normal необходимо отобразить полосу от -Inf до нижнего края, присвойте extendlow значение :auto, чтобы у продолжения был тот же цвет, что и у первого уровня, либо укажите цвет напрямую (по умолчанию nothing означает отсутствие продолжающей полосы).
fxaa
Значение по умолчанию: true
определяет то, будет ли график отрисовываться с помощью fxaa (сглаживание, только GLMakie).
inspectable
Значение по умолчанию: true
определяет, должен ли график проверяться с помощью DataInspector.
inspector_clear
Значение по умолчанию: automatic
задает функцию обратного вызова (inspector, plot) -> ... для очистки пользовательских индикаторов в DataInspector.
inspector_hover
Значение по умолчанию: automatic
задает функцию обратного вызова (inspector, plot, index) -> ..., которая заменяет методы show_data по умолчанию.
inspector_label
Значение по умолчанию: automatic
задает функцию обратного вызова (plot, index, position) -> string, которая заменяет метку по умолчанию, сгенерированную DataInspector.
levels
Значение по умолчанию: 10
значение может быть одного из следующих типов:
-
Int— получается n уровней или полос одинаковой ширины; -
AbstractVector{<:Real}— содержит список n последовательных краев от нижнего до верхнего, в результате чего получается n-1 уровней или полос.
Если значение levels имеет тип Int, график contourf будет прямоугольным, так как все значения zs будут охвачены от края до края. Вот почему для таких графиков contourf Axis по умолчанию имеет жесткие пределы. Однако обратите внимание, что если для levels указывается AbstractVector{<:Real}, пределы осей включают поля по умолчанию, так как график contourf может иметь неправильную форму. Чтобы ужесточить пределы, как в случае с tightlimits!(ax), можно использовать Int.
mode
Значение по умолчанию: :normal
определяет, как интерпретируется атрибут levels: :normal или :relative. В режиме :normal уровни напрямую соответствуют значениям z. В режиме :relative края указываются в виде доли между минимальным и максимальным значениями zs. Так, например, можно нарисовать полосы для верхних 90 %, исключив нижние 10 %, с помощью аргументов levels = 0.1:0.1:1.0, mode = :relative.
model
Значение по умолчанию: automatic
задает модельную матрицу для графика. Переопределяет настройки, выполненные с помощью translate!, rotate! и scale!.
overdraw
Значение по умолчанию: false
определяет то, будет ли график отрисовываться поверх других графиков. В частности, это означает игнорирование проверок глубины в бэкендах GL.
space
Значение по умолчанию: :data
задает пространство преобразования для прямоугольника, охватывающего график. Возможные входные данные см. в описании Makie.spaces().
ssao
Значение по умолчанию: false
определяет то, будет ли график отрисовываться с использованием ssao (преграждение окружающего света в экранном пространстве). Обратите внимание, что это имеет смысл только для трехмерных графиков и применимо только с fxaa = true.