surface
|
Страница в процессе перевода. |
#
MakieCore.surface — Function
surface(x, y, z)
surface(z)
Строит поверхность, где (x, y) определяет сетку, значения высоты которой соответствуют элементам в z. x и y могут быть объектами Vectors, которые определяют регулярную сетку, или объектами Matrices, которые определяют нерегулярную сетку.
Тип графика
Псевдоним типа графика для функции surface — Surface.
Примеры
Сеточные поверхности
По умолчанию данные поверхности размещаются на сетке, соответствующей размеру входных данных. Сетку можно задать явно, передав в качестве аргументов X и Y диапазон или вектор значений. Затем позиции или вершины поверхности выводятся как Point.(X, Y', Z). Интервалы (например, 0..1) можно использовать только для указания начальной и конечной точек при условии, что между ними присутствует линейный диапазон.
using GLMakie
xs = LinRange(0, 10, 100)
ys = LinRange(0, 15, 100)
zs = [cos(x) * sin(y) for x in xs, y in ys]
surface(xs, ys, zs, axis=(type=Axis3,))
using GLMakie
using DelimitedFiles
volcano = readdlm(Makie.assetpath("volcano.csv"), ',', Float64)
surface(volcano,
colormap = :darkterrain,
colorrange = (80, 190),
axis=(type=Axis3, azimuth = pi/4))
using GLMakie
using SparseArrays
using LinearAlgebra
# Этот пример предоставил Мориц Шауэр (Moritz Schauer) (@mschauer).
#=
Define the precision matrix (inverse covariance matrix)
for the Gaussian noise matrix. It approximately coincides
with the Laplacian of the 2d grid or the graph representing
the neighborhood relation of pixels in the picture,
https://en.wikipedia.org/wiki/Laplacian_matrix
=#
function gridlaplacian(m, n)
S = sparse(0.0I, n*m, n*m)
linear = LinearIndices((1:m, 1:n))
for i in 1:m
for j in 1:n
for (i2, j2) in ((i + 1, j), (i, j + 1))
if i2 <= m && j2 <= n
S[linear[i, j], linear[i2, j2]] -= 1
S[linear[i2, j2], linear[i, j]] -= 1
S[linear[i, j], linear[i, j]] += 1
S[linear[i2, j2], linear[i2, j2]] += 1
end
end
end
end
return S
end
# d означает размер данных
d = 150
# Выборочный центрированный гауссовский шум с правильной корреляцией по методу
# на основе разложения Холецкого матрицы точности
data = 0.1randn(d,d) + reshape(
cholesky(gridlaplacian(d,d) + 0.003I) \ randn(d*d),
d, d
)
surface(data; shading = NoShading, colormap = :deep)
surface(data; shading = NoShading, colormap = :deep)
Поверхность Quad Mesh (из четырехугольных элементов).
Значения X и Y также могут быть представлены в виде матрицы. В данном случае позиции поверхности следуют как Point.(X, Y, Z), так что поверхность больше не ограничена сеткой XY.
using GLMakie
rs = 1:10
thetas = 0:10:360
xs = rs .* cosd.(thetas')
ys = rs .* sind.(thetas')
zs = sin.(rs) .* cosd.(thetas')
surface(xs, ys, zs)
Обработка значений NaN
Если вершина поверхности имеет значение NaN, то есть X, Y или Z имеют отношение к NaN, построить все связанные грани невозможно. Поэтому у поверхности будет отверстие вокруг вершины NaN. Если значение NaN имеет лишь цвет, для построения будет использоваться nan_color.
using GLMakie
xs = ys = vcat(1:9, NaN, 11:30)
zs = [2 * sin(x+y) for x in range(-3, 3, length=30), y in range(-3, 3, length=30)]
zs_nan = copy(zs)
zs_nan[25, 25] = NaN
f = Figure(size = (600, 300))
surface(f[1, 1], xs, ys, zs_nan, axis = (show_axis = false,))
surface(f[1, 2], 1:30, 1:30, zs, color = zs_nan, nan_color = :red, axis = (show_axis = false,))
f
Двумерная поверхность
График поверхности может выступать в качестве внесеточной версии тепловой карты или изображения в двумерной проекции. Для этого рекомендуется передавать данные с помощью color, а не с помощью аргумента Z, чтобы график не конфликтовал с другими из-за его значений Z.
using GLMakie
rs = 1:10
thetas = 0:10:360
xs = rs .* cosd.(thetas')
ys = rs .* sind.(thetas')
zs = sin.(rs) .* cosd.(thetas')
surface(xs, ys, zeros(size(zs)), color = zs, shading = NoShading)
Атрибуты
alpha
Значение по умолчанию: 1.0
Альфа-значение цветовой карты или атрибута color. Несколько букв, таких как в plot(alpha=0.2, color=(:red, 0.5), будут умножены.
backlight
Значение по умолчанию: 0.0
Устанавливает вес для расчета вторичного освещения с использованием перевернутых нормалей.
clip_planes
Значение по умолчанию: automatic
Плоскости обрезки позволяют выполнять обрезку в трехмерном пространстве. Вы можете задать вектор длиной до 8 Plane3f Здесь вы можете задать плоскости, за которыми участки будут обрезаны (т.е. станут невидимыми). По умолчанию плоскости клипа наследуются от родительского графика или сцены. Вы можете удалить родительский элемент clip_planes проходя мимо Plane3f[].
color
Значение по умолчанию: nothing
Может быть установлено значение Matrix{<: Union{Number, Colorant}} для окрашивания поверхности независимо от z компонент. Если color=nothing, по умолчанию используется значение color=z. Также может быть Makie.AbstractPattern.
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).
diffuse
Значение по умолчанию: 1.0
Определяет, насколько сильно красный, зеленый и синий каналы реагируют на рассеянный (рассеянный) свет.
fxaa
Значение по умолчанию: true
Регулирует, будет ли график отображаться с использованием 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.
interpolate
Значение по умолчанию: true
[(W)только для GLMakie] Указывает, будет ли выборка матрицы поверхности выполняться с помощью интерполяции.
invert_normals
Значение по умолчанию: false
Инвертирует нормали, сгенерированные для поверхности. Это может быть полезно для освещения другой стороны поверхности.
material
Значение по умолчанию: nothing
RPRMakie - единственный атрибут для установки сложных материалов RadeonProRender. Предупреждаю, способ установки RPR-материала может измениться, и другие серверные системы будут игнорировать этот атрибут
model
Значение по умолчанию: automatic
Задает матрицу модели для построения графика. Это отменяет корректировки, сделанные с помощью translate!, rotate! и scale!.
overdraw
Значение по умолчанию: false
Определяет, будет ли график отображаться поверх других графиков. В частности, это означает игнорирование проверок глубины в GL-интерфейсах
shading
Значение по умолчанию: automatic
Задает используемый алгоритм освещения. Возможны следующие варианты NoShading (без освещения), FastShading (Окружающий свет + точечный свет) или MultiLightShading (Несколько источников света, только GLMakie). Обратите внимание, что это не влияет на RPRMakie.
space
Значение по умолчанию: :data
задает область преобразования для прямоугольника, охватывающего участок. Видеть Makie.spaces() для получения возможных вводных данных.
specular
Значение по умолчанию: 0.2
Определяет, насколько сильно объект отражает свет в красном, зеленом и синем каналах.
ssao
Значение по умолчанию: false
Определяет, будет ли график отображаться с помощью ssao (screen space ambient occlusion). Обратите внимание, что это имеет смысл только для 3D-графиков и применимо только к fxaa = true.
transparency
Значение по умолчанию: false
Настраивает прозрачность графика. В GLMakie transparency = true в результате используется прозрачность, независимая от порядка.
uv_transform
Значение по умолчанию: automatic
Устанавливает преобразование для uv-координат, которое управляет отображением текстуры на поверхности. Атрибутом может быть I, scale::VecTypes{2}, (translation::VecTypes{2}, scale::VecTypes{2}), любой из :rotr90, :rotl90, :rot180, :swap_xy/:transpose, :flip_x, :flip_y, :flip_xy, или, в большинстве случаев, Makie.Mat{2, 3, Float32} или Makie.Mat3f как было возвращено Makie.uv_transform(). Они также могут быть изменены путем передачи кортежа (op3, op2, op1).