exponenta event banner

swarmchart3

3-D диаграмма разброса роев

    Описание

    пример

    swarmchart3(x,y,z) отображает диаграмму 3-D роя, которая представляет собой график рассеяния со смещением точек (дрожание) в x- и y-размерности. Точки образуют различные формы, а контур каждой формы подобен скрипичному сюжету. Диаграммы роя 3-D помогают визуализировать дискретные (x,y) данные с распределением данных z. При каждом (x,y) местоположение, точки дрожат на основе оценки плотности ядра z.

    пример

    swarmchart3(x,y,z,sz) задание размеров маркера. Для печати всех маркеров одинакового размера укажите sz как скаляр. Для печати маркеров различных размеров укажите sz как вектор того же размера, что и x, y, и z.

    пример

    swarmchart3(x,y,z,sz,c) определяет цвета маркеров. Для печати всех маркеров одинакового цвета укажите c в качестве имени цвета или триплета RGB. Чтобы назначить каждому маркеру другой цвет, укажите вектор того же размера, что и x, y, и z. Кроме того, можно указать трехстолбцовую матрицу RGB-триплетов. Количество строк в матрице должно соответствовать длине x, y, и z.

    пример

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

    пример

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

    swarmchart3(___,Name,Value) задает дополнительные свойства для диаграммы роя с использованием одного или нескольких Name,Value аргументы пары. Укажите свойства после всех других входных аргументов. Список свойств см. в разделе Свойства разброса.

    пример

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

    пример

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

    Примеры

    свернуть все

    Прочитайте 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 с названием дня из каждого наблюдения.

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

    Создание категориального вектора y содержащие значения "pm" или "am" по времени для каждого наблюдения в таблице. Создать вектор z данных трафика в восточном направлении. Затем создайте роевую диаграмму из x, y, и z. График показывает распределение данных за каждое утро и вечер недели.

    ispm = tbl.Timestamp.Hour < 12;
    y = categorical;
    y(ispm) = "pm";
    y(~ispm) = "am";
    z= tbl.Eastbound;
    swarmchart3(x,y,z);

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

    Создать вектор x как комбинация нулей и единиц, и создать y как вектор, содержащий все. Создать z как вектор возведенных в квадрат случайных чисел. Затем создайте роевую диаграмму из x, y, и zи укажите размер маркера размера как 5.

    x = [zeros(1,500) ones(1,500)];
    y = ones(1,1000);
    z = randn(1,1000).^2;
    swarmchart3(x,y,z,5);

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

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

    x = [zeros(1,500) ones(1,500)];
    y = ones(1,1000);
    z = randn(1,1000).^2;
    swarmchart3(x,y,z,'.');

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

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

    x = [zeros(1,500) ones(1,500)];
    y = randi(2,1,1000);
    z = randn(1,1000).^2;
    c = sqrt(z);
    swarmchart3(x,y,z,50,c,'filled');

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

    Создать вектор x содержащий комбинацию нулей и единиц, и создать y содержит случайную комбинацию чисел от одного до четырех. Создать z как вектор возведенных в квадрат случайных чисел. Затем создайте роевую диаграмму из x, y, и z путем вызова swarmchart с возвращаемым аргументом, который хранит Scatter объект. Добавьте метки осей X и Y, чтобы увидеть эффект изменения свойств дрожания в каждом измерении.

    x = [zeros(1,500) ones(1,500)];
    y = randi(4,1,1000);
    z = randn(1,1000).^2;
    s = swarmchart3(x,y,z);
    xlabel('X')
    ylabel('Y')

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

    Измените формы кластеров точек, установив свойства дрожания в Scatter объект. В x размер, укажите равномерное случайное дрожание и измените ширину дрожания на 0.5 единицы данных. В y размер, укажите нормальное случайное дрожание и измените ширину дрожания на 0.1 единицы данных. Интервал между точками не превышает заданную ширину дрожания.

    s.XJitter = 'rand';
    s.XJitterWidth = 0.5;
    s.YJitter = 'randn';
    s.YJitterWidth = 0.1;

    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 с названиями дней для каждого наблюдения. Создание категориального вектора y содержащие значения "pm" или "am" по времени для каждого наблюдения в таблице. Определить ze в качестве вектора данных трафика в восточном направлении и определить zw как вектор данных трафика в западном направлении.

    daynames = ["Sunday" "Monday" "Tuesday" "Wednesday" "Thursday" "Friday" "Saturday"];
    x = categorical(tbl.Day,daynames);
    ispm = tbl.Timestamp.Hour<12;
    y = categorical;
    y(ispm) = 'pm';
    y(~ispm) = 'am';
    ze = tbl.Eastbound;
    zw = tbl.Westbound;

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

    tiledlayout('flow')
    ax1=nexttile;
    swarmchart3(ax1,x,y,ze,'.');

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

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

    ax2 = nexttile;
    z = tbl.Westbound;
    swarmchart3(ax2,x,y,zw,'.');

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

    Входные аргументы

    свернуть все

    x-координаты, указанные как числовой скаляр или вектор того же размера, что и y и z.

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

    y-координаты, указанные как числовой скаляр или вектор того же размера, что и x и z.

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

    z-координаты, указанные как числовой скаляр или вектор того же размера, что и x и y.

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

    Размер маркера в точках, указанный в одной из следующих форм:

    • Числовой скаляр - печать всех маркеров одинакового размера.

    • Вектор строки или столбца - использовать разные размеры для каждого маркера. Длина sz должна равняться длине x, y, и z.

    • [] - Используйте размер по умолчанию 36 точек.

    Цвет маркера, указанный в одной из следующих форм:

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

    • Матрица трех столбцов триплетов RGB - используйте разные цвета для каждого маркера. Каждая строка матрицы задает цвет триплета RGB для соответствующего маркера. Число строк должно быть равно длине x, y, и z.

    • Вектор (Vector) - для каждого маркера используются разные цвета. Значения в c индексировать в текущую карту цветов, и они охватывают весь диапазон карты цветов. Длина c должна равняться длине x, y, и z. Для изменения карты цветов используйте colormap функция.

    Имя цветаОписаниеЭквивалентный триплет RGB
    'red' или 'r'Красный[1 0 0]
    'green' или 'g'Зеленый[0 1 0]
    'blue' или 'b'Синий[0 0 1]
    'yellow' или 'y'Желтый[1 1 0]
    'magenta' или 'm'Пурпурный[1 0 1]
    'cyan' или 'c'Голубой[0 1 1]
    'white' или 'w'Белый[1 1 1]
    'black' или 'k'Черный[0 0 0]

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

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

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

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

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

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

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

    Пример: swarmchart3(randi(2,500,1),randi(2,500,1),randn(500,1),'MarkerFaceColor','red') указывает красные маркеры с заливкой.

    Тип дрожания (расстояние между точками) вдоль размера 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, определяемый как одно из следующих значений:

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

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

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

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

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

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

    YJitterWidth = 0.9 * min(diff(unique(y)));

    Алгоритмы

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

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

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

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

    См. также

    Функции

    Свойства

    Представлен в R2020b