swarmchart

Рой диаграмма поля точек

  • Swarm chart

Описание

пример

swarmchart(x,y) отображает наклонную диаграмму, которая является графиком поля точек со смещением точек (джиттерированным) в x-размерность. Точки образуют различные формы, и контур каждой формы аналогичен графику скрипки. Рой графики помогают вам визуализировать дискретные x данные с распределением y данные. В каждом месте в xточки джиттерируются на основе оценки плотности ядра y.

  • Чтобы построить график одного набора точек, задайте x и y как векторы равной длины.

  • Чтобы построить график нескольких наборов точек на одном и том же наборе осей, задайте хотя бы один из x или y как матрица.

пример

swarmchart(x,y,sz) определяет размеры маркера. Чтобы построить график всех маркеров с одинаковым размером, задайте sz как скаляр. Чтобы построить график маркеров с различными размерами, задайте sz как вектор или матрица.

пример

swarmchart(x,y,sz,c) определяет цвета маркера. Можно задать один цвет для всех маркеров или изменить цвет. Например, можно построить график всех красных кругов путем определения c как 'red'.

пример

swarmchart(___,mkr) задает маркер, отличный от маркера по умолчанию, который является кругом. Задайте mkr после всех аргументов в любом из предыдущих синтаксисов.

пример

swarmchart(___,'filled') заполняет маркеры. Задайте 'filled' опция после всех аргументов в любом из предыдущих синтаксисов.

пример

swarmchart(___,Name,Value) задает дополнительные свойства для графика роя, используя один или несколько Name,Value аргументы в виде пар. Задайте свойства после всех других входных параметров. Список свойств см. в разделе Свойств объекта Scatter.

пример

swarmchart(ax,___) отображает наклонный график в целевых осях. Задайте оси перед всеми аргументами в любом из предыдущих синтаксисов.

пример

s = swarmchart(___) возвращает Scatter объект или массив Scatter объекты. Использование s для изменения свойств графика после ее создания. Список свойств см. в разделе Свойств объекта Scatter.

Примеры

свернуть все

Создайте вектор x координаты и использование randn функция для генерации нормально распределенных случайных значений для y. Затем создайте рывковый график x и y.

x = [ones(1,500) 2*ones(1,500) 3*ones(1,500)];
y1 = 2 * randn(1,500);
y2 = 3 * randn(1,500) + 5;
y3 = 5 * randn(1,500) + 5;
y = [y1 y2 y3];
swarmchart(x,y)

Figure contains an axes. The axes contains an object of type scatter.

Создайте три набора x и y координаты. Используйте randn функция для генерации случайных значений для y.

x1 = ones(1,500);
x2 = 2 * ones(1,500);
x3 = 3 * ones(1,500);
y1 = 2 * randn(1,500);
y2 = [randn(1,250) randn(1,250) + 4];
y3 = 5 * randn(1,500) + 5;

Создайте график роя первого набора данных и задайте равномерный размер маркера 5. Затем позвоните hold on для построения графика второго и третьего наборов данных вместе с первым набором данных. Функции hold off чтобы отпустить состояние удержания осей.

swarmchart(x1,y1,5)
hold on
swarmchart(x2,y2,5)
swarmchart(x3,y3,5)
hold off

Figure contains an axes. The axes contains 3 objects of type scatter.

Чтение BicycleCounts.csv набор данных в расписание с именем tbl. Этот набор данных содержит данные о велосипедном движении в течение определенного периода времени. Отображение первых пяти строк tbl.

tbl = readtable(fullfile(matlabroot,'examples','matlab','data','BicycleCounts.csv'));
tbl(1:5,:)
ans=5×5 table
         Timestamp              Day         Total    Westbound    Eastbound
    ___________________    _____________    _____    _________    _________

    2015-06-24 00:00:00    {'Wednesday'}     13          9            4    
    2015-06-24 01:00:00    {'Wednesday'}      3          3            0    
    2015-06-24 02:00:00    {'Wednesday'}      1          1            0    
    2015-06-24 03:00:00    {'Wednesday'}      1          1            0    
    2015-06-24 04:00:00    {'Wednesday'}      1          1            0    

Создайте вектор x с именем дня из каждого наблюдения и другим вектором y с наблюдаемым велосипедным движением. Затем создайте рывковый график x и y, и задайте маркер точки ('.'). На графике показано распределение велосипедного движения по дням недели.

daynames = ["Sunday" "Monday" "Tuesday" "Wednesday" "Thursday" "Friday" "Saturday"];
x = categorical(tbl.Day,daynames);
y = tbl.Total;
swarmchart(x,y,'.');

Figure contains an axes. The axes contains an object of type scatter.

Чтение BicycleCounts.csv набор данных в расписание с именем tbl. Создайте вектор x с именем дня для каждого наблюдения, другой вектор y при наблюдаемом движении велосипедов и третьем векторе c с часом дня.

Затем создайте рывковый график x и y, и укажите размер маркера следующим 20. Задайте цвета маркеров как векторные c. Значения в индексе вектора в палитру рисунка. Таким образом, цвета изменяются в соответствии с часом для каждой точки данных. Используйте 'filled' опция для заливки маркеров цветом вместо отображения их в виде полых кругов.

tbl = readtable(fullfile(matlabroot,'examples','matlab','data','BicycleCounts.csv'));
daynames = ["Sunday" "Monday" "Tuesday" "Wednesday" "Thursday" "Friday" "Saturday"];
x = categorical(tbl.Day,daynames);
y = tbl.Total;
c = hour(tbl.Timestamp);
swarmchart(x,y,20,c,'filled');

Figure contains an axes. The axes contains an object of type scatter.

Чтение BicycleCounts.csv набор данных в расписание с именем tbl. Создайте вектор x с именем дня для каждого наблюдения, другой вектор y при наблюдаемом движении велосипедов и третьем векторе c с часом дня. Затем создайте рывковый график x и y, и укажите размер маркера следующим 5, и цвета маркеров как векторные c. Вызовите swarmchart функция с возвращаемым аргументом s, так что можно изменить график после ее создания.

tbl = readtable(fullfile(matlabroot,'examples','matlab','data','BicycleCounts.csv'));
daynames = ["Sunday" "Monday" "Tuesday" "Wednesday" "Thursday" "Friday" "Saturday"];
x = categorical(tbl.Day,daynames);
y = tbl.Total;
c = hour(tbl.Timestamp);
s = swarmchart(x,y,5,c);

Figure contains an axes. The axes contains an object of type scatter.

Изменяйте формы кластеров в каждом x местоположение, так что точки распределены равномерно и случайным образом и интервал ограничен не более 0.5 модулей данных.

s.XJitter = 'rand';
s.XJitterWidth = 0.5;

Figure contains an axes. The axes contains an object of type scatter.

Создайте пару x и y координаты. Используйте randn функция для генерации случайных значений для y. Затем создайте наклонный график с заполненными маркерами, которые на 50% прозрачны как на их гранях, так и на ребрах.

x1 = ones(1,500);
x2 = 2 * ones(1,500);
x = [x1 x2];
y1 = 2 * randn(1,500);
y2 = [randn(1,250) randn(1,250) + 4];
y = [y1 y2];
swarmchart(x,y,'filled','MarkerFaceAlpha',0.5,'MarkerEdgeAlpha',0.5)

Figure contains an axes. The axes contains an object of type scatter.

Чтение BicycleCounts.csv набор данных в расписание с именем tbl. Этот набор данных содержит данные о велосипедном движении в течение определенного периода времени. Отображение первых пяти строк tbl.

tbl = readtable(fullfile(matlabroot,'examples','matlab','data','BicycleCounts.csv'));
tbl(1:5,:)
ans=5×5 table
         Timestamp              Day         Total    Westbound    Eastbound
    ___________________    _____________    _____    _________    _________

    2015-06-24 00:00:00    {'Wednesday'}     13          9            4    
    2015-06-24 01:00:00    {'Wednesday'}      3          3            0    
    2015-06-24 02:00:00    {'Wednesday'}      1          1            0    
    2015-06-24 03:00:00    {'Wednesday'}      1          1            0    
    2015-06-24 04:00:00    {'Wednesday'}      1          1            0    

Определите x как категориальный массив имен дней в таблице. Определите yEast и yWest как векторы, содержащие количество велосипедного трафика в восточном и западном направлениях.

daynames = ["Sunday" "Monday" "Tuesday" "Wednesday" "Thursday" "Friday" "Saturday"];
x = categorical(tbl.Day,daynames);
yEast = tbl.Eastbound;
yWest = tbl.Westbound;

Создайте мозаику графика размещения в 'flow' расположение плитки, так что оси заполняют доступное пространство в размещении. Вызовите nexttile функция, чтобы создать объект осей и вернуть его как ax1. Затем создайте рой графиков данных в восточном направлении путем прохождения ax1 на swarmchart функция.

tiledlayout('flow')
ax1 = nexttile;
y = tbl.Eastbound;
swarmchart(ax1,x,y,'.');

Figure contains an axes. The axes contains an object of type scatter.

Повторите процесс, чтобы создать второй объект осей и рой график для западного трафика.

ax2 = nexttile;
y = tbl.Westbound;
s = swarmchart(ax2,x,y,'.');

Figure contains 2 axes. Axes 1 contains an object of type scatter. Axes 2 contains an object of type scatter.

Входные параметры

свернуть все

x -кординаты, заданные как скаляр, вектор или матрица. Размер и форма x зависит от формы ваших данных. В этой таблице описываются наиболее распространенные ситуации.

Тип графикаКак задать координаты
Одна точка

Задайте x и y как скаляры. Для примера:

swarmchart(1,1)

Один набор точек

Задайте x и y как любая комбинация строки или векторов-столбцов той же длины. Для примера:

x = randi(3,100,1);
y = randn(1,100);
swarmchart(x,y)

Несколько наборов точек, которые являются различными цветами

Если все наборы имеют одинаковые x - или y - координаты, задайте общие координаты как вектор, а другие координаты как матрицу. Длина вектора должна совпадать с одним из размерностей матрицы. Для примера:

x = randi(2,1,100); 
y = [randn(100,1) randn(100,1)+5];
swarmchart(x,y,100)
Если матрица квадратная, swarmchart строит отдельный набор точек для каждого столбца в матрице.

Кроме того, задайте x и y как матрицы равного размера. В этом случае, swarmchart строит графики для каждого столбца y по соответствующему столбцу x. Для примера:

x = randi(2,100,2);
y = [randn(100,1) randn(100,1)+5];
swarmchart(x,y,100)

Типы данных: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | categorical

y -кординаты, заданные как скаляр, вектор или матрица. Размер и форма y зависит от формы ваших данных. В этой таблице описываются наиболее распространенные ситуации.

Тип графикаКак задать координаты
Одна точка

Задайте x и y как скаляры. Для примера:

swarmchart(1,1)

Один набор точек

Задайте x и y как любая комбинация строки или векторов-столбцов той же длины. Для примера:

x = randi(3,100,1);
y = randn(1,100);
swarmchart(x,y)

Несколько наборов точек, которые являются различными цветами

Если все наборы имеют одинаковые x - или y - координаты, задайте общие координаты как вектор, а другие координаты как матрицу. Длина вектора должна совпадать с одним из размерностей матрицы. Для примера:

x = randi(2,1,100); 
y = [randn(100,1) randn(100,1)+5];
swarmchart(x,y,100)
Если матрица квадратная, swarmchart строит отдельный набор точек для каждого столбца в матрице.

Кроме того, задайте x и y как матрицы равного размера. В этом случае, swarmchart строит графики для каждого столбца y по соответствующему столбцу x. Для примера:

x = randi(2,100,2);
y = [randn(100,1) randn(100,1)+5];
swarmchart(x,y,100)

Типы данных: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | categorical | datetime | duration

Размер маркера, заданный как числовой скаляр, вектор, матрица или пустой массив ([]). Размер управляет площадью каждого маркера в точках в квадрате. Пустой массив задает размер по умолчанию 36 точек. Способ задания размера зависит от способа задания x и yи как вы хотите, чтобы график выглядел. В этой таблице описываются наиболее распространенные ситуации.

Желаемые размеры маркераx и y szПример

Одинаковый размер для всех точек

Любая допустимая комбинация векторов или матриц, описанная для x и y.

Скаляр

Задайте x как вектор, y как матрица, и sz как скаляр.

x = randi(2,1,100); 
y = randn(100,1); 
swarmchart(x,y,100)

Разный размер для каждой точки

Векторы той же длины

  • Вектор с той же длиной, что и x и y.

  • Матрица с, по крайней мере, одной размерностью, совпадающим с длинами x и y. Установка матрицы полезна для отображения нескольких маркеров с различными размерами в каждом местоположении (x, y).

Задайте x, y, и sz как векторы.

x = randi(2,1,100); 
y = randn(100,1); 
sz = randi([70 2000],100,1);
swarmchart(x,y,sz)

Задайте x и y как векторы и sz как матрица.

x = randi(2,1,100); 
y = randn(100,1); 
sz = randi([70 2000],100,2);
swarmchart(x,y,sz)

Разный размер для каждой точки

По крайней мере, один из x или y является матрицей для графического изображения нескольких наборов данных

  • Вектор с таким же количеством элементов, как и точки в каждом наборе данных.

  • Матрица, которая имеет тот же размер что и x или y матрица.

Задайте x как вектор, y как матрица, и sz как вектор.

x = randi(2,1,100);
y = [randn(100,1) randn(100,1)+5];
sz = randi([70 2000],100,1);
swarmchart(x,y,sz)

Задайте x как вектор, y как матрица, и sz как матрица того же размера, что и y.

x = randi(2,1,100); 
y = [randn(100,1) randn(100,1)+5]; 
sz = randi([70 2000],100,2);
swarmchart(x,y,sz)

Цвет маркера, заданный как название цвета, триплет RGB, матрица триплетов RGB или вектор индексов палитры.

  • Название цвета - название цвета, такое как 'red', или краткое имя, например 'r'.

  • Триплет RGB - трехэлементный вектор-строка, элементы которого определяют интенсивность красных, зеленых и синих компонентов цвета. Интенсивность должна быть в области значений [0,1]; для примера, [0.4 0.6 0.7]. Триплеты RGB полезны для создания пользовательских цветов.

  • Матрица триплетов RGB - трехколоночная матрица, в которой каждая строка является триплетом RGB.

  • Вектор индексов палитры - вектор числовых значений, имеющий ту же длину, что и x и y векторы.

Способ задания цвета зависит от требуемой цветовой схемы и от того, строите ли вы график для одного набора координат или нескольких наборов координат. В этой таблице описываются наиболее распространенные ситуации.

Цветовая схемаКак задать цветПример

Используйте один цвет для всех точек.

Укажите название цвета или краткое имя из таблицы ниже или укажите один триплет RGB.

Постройте график одного набора точек и задайте цвет следующим 'red'.

x = randi(2,1,100); 
y = randn(100,1); 
c = 'red';
swarmchart(x,y,[],c)

Постройте график двух наборов точек и укажите цвет как красный с помощью триплета RGB.

x = randi(2,1,100); 
y = randn(100,1); 
c = [0.6 0 0.9];
swarmchart(x,y,[],c)

Назначьте различные цвета каждой точке с помощью палитры.

Задайте строку или вектор-столбец чисел. Индекс чисел в текущий массив палитры. Наименьшее значение преобразуется в первую строку палитры, а наибольшее значение - в последнюю строку. Промежуточные значения линейно сопоставляются с промежуточными строками.

Если ваш график имеет три точки, задайте вектор-столбец, чтобы убедиться, что значения интерпретируются как индексы палитры.

Использовать этот метод можно только при x, y, и sz все векторы.

Создайте вектор c который задает 100 индексов палитры. Постройте график 100 точек с помощью цветов из текущей палитры. Затем смените палитру на winter.

x = randi(2,1,100); 
y = randn(100,1);
c = 1:100;
swarmchart(x,y,[],c)
colormap(gca,'winter')

Создайте пользовательский цвет для каждой точки.

Задайте матрицу m на 3 триплетов RGB, где m - число точек на графике.

Использовать этот метод можно только при x, y, и sz все векторы.

Создайте матрицу c задает 100 случайных триплетов RGB. Затем создайте график роя 100 точек, используя эти цвета.

x = randi(2,1,100); 
y = randn(100,1); 
c = rand(100,3);
swarmchart(x,y,[],c)

Создайте другой цвет для каждого набора данных.

Задайте матрицу n на 3 триплетов RGB, где n - количество наборов данных.

Использовать этот метод можно только тогда, когда хотя бы один из x, y, или sz является матрицей.

Создайте матрицу c который содержит два триплетов RGB. Затем постройте график двух наборов данных с использованием этих цветов.

x = randi(2,100,2); 
y = [randn(100,1) randn(100,1)+5]; 
c = [1 0 0; 0 0 1];
swarmchart(x,y,[],c)

Названия цвета и триплеты RGB для простых цветов

Название цветаКраткое имяТриплет RGBШестнадцатеричный цветовой кодВнешность
'red''r'[1 0 0]'#FF0000'

'green''g'[0 1 0]'#00FF00'

'blue''b'[0 0 1]'#0000FF'

'cyan' 'c'[0 1 1]'#00FFFF'

'magenta''m'[1 0 1]'#FF00FF'

'yellow''y'[1 1 0]'#FFFF00'

'black''k'[0 0 0]'#000000'

'white''w'[1 1 1]'#FFFFFF'

Вот триплеты RGB и шестнадцатеричные цветовые коды для цветов по умолчанию MATLAB® использует на многих типах графиков.

Триплет RGBШестнадцатеричный цветовой кодВнешность
[0 0.4470 0.7410]'#0072BD'

[0.8500 0.3250 0.0980]'#D95319'

[0.9290 0.6940 0.1250]'#EDB120'

[0.4940 0.1840 0.5560]'#7E2F8E'

[0.4660 0.6740 0.1880]'#77AC30'

[0.3010 0.7450 0.9330]'#4DBEEE'

[0.6350 0.0780 0.1840]'#A2142F'

Тип маркера, заданный как одно из значений, перечисленных в этой таблице.

МаркерОписание
'o'Круг
'+'Плюс знак
'*'Звездочка
'.'Точка
'x'Крест
'_'Горизонтальная линия
'|'Вертикальная линия
's'Квадрат
'd'Алмаз
'^'Направленный вверх треугольник
'v'Нисходящий треугольник
'>'Треугольник , указывающий вправо
'<'Треугольник , указывающий влево
'p'Пентаграмма
'h'Hexagram

Опция заполнения интерьера маркеров, заданная как 'filled'. Используйте эту опцию с маркерами, которые имеют лицо, например 'o' или 'square'. Маркеры, которые не имеют грани и содержат только ребра, не визуализируются вообще ('+', '*', '.', и 'x').

The 'filled' опция устанавливает MarkerFaceColor свойство Scatter объект к 'flat' и MarkerEdgeColor свойство к 'none'. В этом случае MATLAB рисует грани маркера, но не ребра.

Целевые оси, заданные как Axes объект, a PolarAxes объект, или GeographicAxes объект. Если вы не задаете оси, графики MATLAB в текущие системы координат создает Axes объект, если он не существует.

Аргументы в виде пар имя-значение

Задайте необязательные разделенные разделенными запятой парами Name,Value аргументы. Name - имя аргумента и Value - соответствующее значение. Name должны находиться внутри кавычек. Можно задать несколько аргументов в виде пар имен и значений в любом порядке Name1,Value1,...,NameN,ValueN.

Пример: swarmchart(randi(4,500,1),randn(500,1),'MarkerFaceColor','red') задает красные заполненные маркеры.

Примечание

Перечисленные здесь свойства являются только подмножеством. Полный список см. в разделе Свойств объекта Scatter.

Тип дрожания (интервал между точками) вдоль x -размерность, заданный как одно из следующих значений:

  • 'none' - Не дрожать точки.

  • 'density' - Дрожание точек с помощью оценки плотности ядра y для 2-D графиков. Если вы задаете эту опцию в две размерностей для 3-D графиков, точки джиттерируются на основе оценки плотности ядра в третьей размерности. Для примера установка XJitter и YJitter на 'density' использует оценку плотности ядра z.

  • 'rand' - Дрожание точек случайным образом с равномерным распределением.

  • 'randn' - Дрожание указывает случайным образом с нормальным распределением.

Максимальное количество дрожания (смещение между точками) вдоль x -размерность, заданное как неотрицательное скалярное значение в единицах данных.

Например, чтобы задать ширину дрожания 90% от кратчайшего расстояния между смежными точками, берите минимальное расстояние между уникальными значениями x и шкала по 0.9.

XJitterWidth = 0.9 * min(diff(unique(x)));

Алгоритмы

Точки на роевом графике джиттерируются с помощью равномерных случайных значений, которые взвешиваются оценкой плотности ядра Гауссова y и относительные числа точек на каждом x расположение. Это поведение соответствует значению по умолчанию 'density' установка XJitter свойство на Scatter объект, когда вы вызываете swarmchart функция.

Максимальное распределение точек в каждом x местоположение составляет 90% наименьшего расстояния между смежными x значения по умолчанию:

spread = 0.9 * min(diff(unique(x)));

Вы можете управлять спредом, установив XJitterWidth свойство на Scatter объект.

См. также

Функции

Свойства

Введенный в R2020b