rainclouds
|
Страница в процессе перевода. |
#
Makie.rainclouds — Function
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))])
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))])
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))])
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))])
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))])
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))])
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))])
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
Атрибуты
boxplot_nudge
Значение по умолчанию: 0.075
Определяет расстояние, на котором должен располагаться прямоугольный график от центральной линии, когда center_boxplot является false. Это значение используется для повторного центрирования бокс-графика.
cloud_width
Значение по умолчанию: 0.75
Определяет размер участка скрипки. Соответствует width ключевое слово arg в violin.
clouds
Значение по умолчанию: violin
[violin, hist, nothing] как отображать графики облаков, либо в виде скрипичных графиков, либо в виде гистограмм, либо вообще без них.
color
Значение по умолчанию: @inherit patchcolor
Один цвет или набор цветов, по одному для каждой точки.
dodge
Значение по умолчанию: automatic
Вектор развития Integer (длина данных) группирующей переменной для создания нескольких параллельных блоков в одной и той же позиции x
gap
Значение по умолчанию: 0.2
Расстояние между элементами на главной оси (в зависимости от orientation).
hist_bins
Значение по умолчанию: 30
Если clouds=hist, это приводит к уменьшению количества ячеек для вызова гистограммы.
jitter_width
Значение по умолчанию: 0.05
Определяет ширину линейки точечной диаграммы в абсолютном выражении по оси x категории.
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
Определяет ширину обводки для контура прямоугольной диаграммы.