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;

Создайте график роя набора First Data и задайте универсальный размер маркера 5. Затем вызовите hold on построить вторые и третьи наборы данных вместе с набором First Data. Вызовите 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.

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

Задайте xY, и 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 матрица для графического вывода нескольких наборов данных

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

  • Матрица A, которая имеет тот же размер как 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)

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

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

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

Можно использовать этот метод только когда xY, и 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 является числом точек в графике.

Можно использовать этот метод только когда xY, и 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 является количеством наборов данных.

Можно использовать этот метод только когда по крайней мере один из xY, или 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'Гексаграмма

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

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

Целевые оси в виде Axes объект, 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 для 2D графиков. Если вы задаете эту опцию в двух измерениях для 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