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

rainclouds

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

rainclouds!(ax, category_labels, data_array; plot_boxplots=true, plot_clouds=true, kwargs...)

Строит график «скрипка» (гистограмму), коробчатую диаграмму и отдельные точки данных с соответствующим интервалом между ними.

Аргументы

  • ax: ось, на которой размещаются все эти графики.

  • category_labels: обычно Vector{String} с меткой для каждого элемента в data_array.

  • data_array: обычно вектор Vector{Float64}, представляющий точки данных для построения.

Именованные аргументы

Тип графика

Псевдоним типа графика для функции rainclouds — RainClouds.

Тучевые графики представляют собой сочетание (половины) скрипичного графика, коробчатого графика и графиков рассеяния. Все три вида вместе могут формировать привлекательный и информативный визуальный ряд, особенно для больших наборов данных N.

using CairoMakie
using Random
using Makie: rand_localized

####
#### Приведенные ниже данные используются для тестирования функционала построения графиков.
####

function mockup_distribution(N)
    all_possible_labels = ["Single Mode", "Double Mode", "Random Exp", "Uniform"]
    category_type = rand(all_possible_labels)

    if category_type == "Single Mode"
        random_mean = rand_localized(0, 8)
        random_spread_coef = rand_localized(0.3, 1)
        data_points = random_spread_coef*randn(N) .+ random_mean

    elseif category_type == "Double Mode"
        random_mean = rand_localized(0, 8)
        random_spread_coef = rand_localized(0.3, 1)
        data_points = random_spread_coef*randn(Int(round(N/2.0))) .+ random_mean

        random_mean = rand_localized(0, 8)
        random_spread_coef = rand_localized(0.3, 1)
        data_points = vcat(data_points, random_spread_coef*randn(Int(round(N/2.0))) .+ random_mean)

    elseif category_type == "Random Exp"
        data_points = randexp(N)

    elseif category_type == "Uniform"
        min = rand_localized(0, 4)
        max = min + rand_localized(0.5, 4)
        data_points = [rand_localized(min, max) for _ in 1:N]

    else
        error("Unidentified category.")
    end

    return data_points
end

function mockup_categories_and_data_array(num_categories; N = 500)
    category_labels = String[]
    data_array = Float64[]

    for category_label in string.(('A':'Z')[1:min(num_categories, end)])
        data_points = mockup_distribution(N)

        append!(category_labels, fill(category_label, N))
        append!(data_array, data_points)
    end
    return category_labels, data_array
end

category_labels, data_array = mockup_categories_and_data_array(3)

colors = Makie.wong_colors()
rainclouds(category_labels, data_array;
    axis = (; xlabel = "Categories of Distributions", ylabel = "Samples", title = "My Title"),
    plot_boxplots = false, cloud_width=0.5, clouds=hist, hist_bins=50,
    color = colors[indexin(category_labels, unique(category_labels))])
8c556c2

rainclouds(category_labels, data_array;
    axis = (; ylabel = "Categories of Distributions",
    xlabel = "Samples", title = "My Title"),
    orientation = :horizontal,
    plot_boxplots = true, cloud_width=0.5, clouds=hist,
    color = colors[indexin(category_labels, unique(category_labels))])
db65c47

rainclouds(category_labels, data_array;
    axis = (;
        xlabel = "Categories of Distributions",
        ylabel = "Samples",
        title = "My Title"
    ),
    plot_boxplots = true, cloud_width=0.5, clouds=hist,
    color = colors[indexin(category_labels, unique(category_labels))])
4afccc4

rainclouds(category_labels, data_array;
    axis = (;
        xlabel = "Categories of Distributions",
        ylabel = "Samples",
        title = "My Title"
    ),
    plot_boxplots = true, cloud_width=0.5, side = :right,
    violin_limits = extrema, color = colors[indexin(category_labels, unique(category_labels))])
a738c3b

rainclouds(category_labels, data_array;
    axis = (;
        xlabel = "Categories of Distributions",
        ylabel = "Samples",
        title = "My Title",
    ),
    plot_boxplots = true, cloud_width=0.5, side = :right,
    color = colors[indexin(category_labels, unique(category_labels))])
5dcf567

more_category_labels, more_data_array = mockup_categories_and_data_array(6)

rainclouds(more_category_labels, more_data_array;
    axis = (;
        xlabel = "Categories of Distributions",
        ylabel = "Samples",
        title = "My Title",
    ),
    plot_boxplots = true, cloud_width=0.5,
    color = colors[indexin(more_category_labels, unique(more_category_labels))])
af9c648

category_labels, data_array = mockup_categories_and_data_array(6)
rainclouds(category_labels, data_array;
    axis = (;
        xlabel = "Categories of Distributions",
        ylabel = "Samples",
        title = "My Title",
    ),
    plot_boxplots = true, cloud_width=0.5,
    color = colors[indexin(category_labels, unique(category_labels))])
642bdb7

4 из них, между 3 распределениями Левый и правый пример С коробчатым графиком и без него

fig = Figure(size = (800*2, 600*5))
colors = [Makie.wong_colors(); Makie.wong_colors()]

category_labels, data_array = mockup_categories_and_data_array(3)
rainclouds!(
    Axis(fig[1, 1], title = "Left Side, with Box Plot"),
    category_labels, data_array;
    side = :left,
    plot_boxplots = true,
    color = colors[indexin(category_labels, unique(category_labels))])

rainclouds!(
    Axis(fig[2, 1], title = "Left Side, without Box Plot"),
    category_labels, data_array;
    side = :left,
    plot_boxplots = false,
    color = colors[indexin(category_labels, unique(category_labels))])

rainclouds!(
    Axis(fig[1, 2], title = "Right Side, with Box Plot"),
    category_labels, data_array;
    side = :right,
    plot_boxplots = true,
    color = colors[indexin(category_labels, unique(category_labels))])

rainclouds!(
    Axis(fig[2, 2], title = "Right Side, without Box Plot"),
    category_labels, data_array;
    side = :right,
    plot_boxplots = false,
    color = colors[indexin(category_labels, unique(category_labels))])

# Графики с дополнительными категориями
# dist_between_categories (0.6, 1.0)
# с тучами и без них

category_labels, data_array = mockup_categories_and_data_array(12)
rainclouds!(
    Axis(fig[3, 1:2], title = "More categories. Default spacing."),
    category_labels, data_array;
    plot_boxplots = true,
    gap = 1.0,
    color = colors[indexin(category_labels, unique(category_labels))])

rainclouds!(
    Axis(fig[4, 1:2], title = "More categories. Adjust space. (smaller cloud widths and smaller category distances)"),
    category_labels, data_array;
    plot_boxplots = true,
    cloud_width = 0.3,
    gap = 0.5,
    color = colors[indexin(category_labels, unique(category_labels))])

rainclouds!(
    Axis(fig[5, 1:2], title = "More categories. Adjust space. No clouds."),
    category_labels, data_array;
    plot_boxplots = true,
    clouds = nothing,
    gap = 0.5,
    color = colors[indexin(category_labels, unique(category_labels))])

supertitle = Label(fig[0, :], "Cloud Plot Testing (Scatter, Violin, Boxplot)", fontsize=30)
fig
410b49d

Атрибуты

boxplot_nudge

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

Определяет расстояние, на котором должен располагаться прямоугольный график от центральной линии, когда center_boxplot является false. Это значение используется для повторного центрирования бокс-графика.

boxplot_width

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

Ширина прямоугольной диаграммы на оси категорий.

center_boxplot

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

Следует ли центрировать блок-схему по категории или нет.

cloud_width

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

Определяет размер участка скрипки. Соответствует width ключевое слово arg в violin.

clouds

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

[violin, hist, nothing] как отображать графики облаков, либо в виде скрипичных графиков, либо в виде гистограмм, либо вообще без них.

color

Значение по умолчанию: @inherit patchcolor

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

cycle

Значение по умолчанию: [:color => :patchcolor]

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

dodge

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

Вектор развития Integer (длина данных) группирующей переменной для создания нескольких параллельных блоков в одной и той же позиции x

dodge_gap

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

Расстояние между пропущенными коробками.

gap

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

Расстояние между элементами на главной оси (в зависимости от orientation).

hist_bins

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

Если clouds=hist, это приводит к уменьшению количества ячеек для вызова гистограммы.

jitter_width

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

Определяет ширину линейки точечной диаграммы в абсолютном выражении по оси x категории.

markersize

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

Размер маркера, используемого для точечной диаграммы.

n_dodge

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

Количество категорий, от которых нужно уклониться (по умолчанию равно maximum(dodge))

orientation

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

Ориентация дождевых облаков (:vertical или :horizontal)

plot_boxplots

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

Следует ли показывать прямоугольные диаграммы для обобщения распределения данных.

show_boxplot_outliers

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

Отображать выбросы на графике в виде точек (обычно это сбивает с толку в сочетании с точечной диаграммой, поэтому по умолчанию они не отображаются).

show_median

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

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

side

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

Может принимать значения :left, :right, определяет, где будет находиться график скрипки относительно точек разброса

side_nudge

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

Специфичен для точечной диаграммы. Значение по умолчанию равно 0,02, если plot_boxplots равно true, в противном случае 0.075 по умолчанию.

strokewidth

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

Определяет ширину обводки для контура прямоугольной диаграммы.

violin_limits

Значение по умолчанию: (-Inf, Inf)

Укажите значения для обрезки violin. Может быть a Tuple или a Function (например datalimits=extrema)

whiskerwidth

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

Ширина полосы Q1, Q3 в прямоугольной диаграмме. Значение как часть boxplot_width.