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

surface

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

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,))
b920bc3

using GLMakie
using DelimitedFiles

volcano = readdlm(Makie.assetpath("volcano.csv"), ',', Float64)

surface(volcano,
    colormap = :darkterrain,
    colorrange = (80, 190),
    axis=(type=Axis3, azimuth = pi/4))
93e8bb2

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)
ed76006

Поверхность 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)
4dcc062

Обработка значений 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
b9692e3

Двумерная поверхность

График поверхности может выступать в качестве внесеточной версии тепловой карты или изображения в двумерной проекции. Для этого рекомендуется передавать данные с помощью 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)
c2bf78b

Атрибуты

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).

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.

interpolate

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

[(W)только для GLMakie] Указывает, будет ли выборка матрицы поверхности выполняться с помощью интерполяции.

invert_normals

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

Инвертирует нормали, сгенерированные для поверхности. Это может быть полезно для освещения другой стороны поверхности.

lowclip

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

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

material

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

RPRMakie - единственный атрибут для установки сложных материалов RadeonProRender. Предупреждаю, способ установки RPR-материала может измениться, и другие серверные системы будут игнорировать этот атрибут

model

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

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

nan_color

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

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

overdraw

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

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

shading

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

Задает используемый алгоритм освещения. Возможны следующие варианты NoShading (без освещения), FastShading (Окружающий свет + точечный свет) или MultiLightShading (Несколько источников света, только GLMakie). Обратите внимание, что это не влияет на RPRMakie.

shininess

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

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

space

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

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

specular

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

Определяет, насколько сильно объект отражает свет в красном, зеленом и синем каналах.

ssao

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

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

transformation

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

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

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).

visible

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

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