Управление категориальным отображением гистограммы

Этот пример показывает, как использовать histogram, чтобы эффективно просмотреть категориальные данные. Можно использовать пары "имя-значение" 'NumDisplayBins', 'DisplayOrder' и 'ShowOthers', чтобы изменить отображение категориальной гистограммы. Эти опции помогают вам лучше организовать данные и уменьшить шум в графике.

Создание категориальной гистограммы

Файл примера outages.csv содержит данные, представляющие отключения электричества электроэнергетики в Соединенных Штатах. Файл содержит шесть столбцов: Region, OutageTime, Loss, Customers, RestorationTime и Cause.

Считайте файл outages.csv как таблицу. Используйте опцию 'Format', чтобы задать вид данных, которые содержит каждый столбец: категориальный ('%C'), с плавающей точкой числовой ('%f') или datetime ('%D'). Индексируйте в первые несколько строк данных, чтобы видеть переменные.

data_formats = '%C%D%f%f%D%C';
C = readtable('outages.csv','Format',data_formats);
first_few_rows = C(1:10,:)
first_few_rows=10×6 table
     Region         OutageTime        Loss     Customers     RestorationTime          Cause     
    _________    ________________    ______    __________    ________________    _______________

    SouthWest    2002-02-01 12:18    458.98    1.8202e+06    2002-02-07 16:50    winter storm   
    SouthEast    2003-01-23 00:49    530.14    2.1204e+05                 NaT    winter storm   
    SouthEast    2003-02-07 21:15     289.4    1.4294e+05    2003-02-17 08:14    winter storm   
    West         2004-04-06 05:44    434.81    3.4037e+05    2004-04-06 06:10    equipment fault
    MidWest      2002-03-16 06:18    186.44    2.1275e+05    2002-03-18 23:23    severe storm   
    West         2003-06-18 02:49         0             0    2003-06-18 10:54    attack         
    West         2004-06-20 14:39    231.29           NaN    2004-06-20 19:16    equipment fault
    West         2002-06-06 19:28    311.86           NaN    2002-06-07 00:51    equipment fault
    NorthEast    2003-07-16 16:23    239.93         49434    2003-07-17 01:12    fire           
    MidWest      2004-09-27 11:09    286.72         66104    2004-09-27 16:37    equipment fault

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

h = histogram(C.Cause);
xlabel('Cause of Outage')
ylabel('Frequency')
title('Most Common Power Outage Causes')

Измените нормализацию гистограммы, чтобы использовать нормализацию 'probability', которая отображает относительную частоту каждой причины отключения электричества.

h.Normalization = 'probability';
ylabel('Relative Frequency')

Изменение порядка отображения

Используйте опцию 'DisplayOrder', чтобы отсортировать интервалы от самого большого до самого маленького.

h.DisplayOrder = 'descend';

Усеченное количество отображенных панелей

Используйте опцию 'NumDisplayBins', чтобы отобразить только три панели в графике. Отображенные вероятности больше не добавляют к 1, поскольку неотображенные данные все еще учтены для нормализации.

h.NumDisplayBins = 3;

Суммирование исключенных данных

Используйте опцию 'ShowOthers', чтобы обобщить все исключенные панели, так, чтобы отображенные вероятности снова добавили к 1.

h.ShowOthers = 'on';

Ограничение нормализации, чтобы отобразить данные

До R2017a histogram и функции histcounts использовали только сгруппированные данные, чтобы вычислить нормализацию. Это поведение означало, что, если некоторые данные закончились вне интервалов, оно было проигнорировано в целях нормализации. Однако в MATLAB® R2017a, поведение, измененное, чтобы всегда нормализовать использование общего количества элементов во входных данных. Новое поведение более интуитивно, но если вы предпочитаете старое поведение, затем необходимо сделать несколько специальных шагов, чтобы ограничить нормализацию только сгруппированными данными.

Вместо того, чтобы нормализовать по всем входным данным, можно ограничить нормализацию вероятности данными, которая отображена в гистограмме. Просто обновите свойство Data объекта гистограммы удалить другие категории. Свойство Categories отражает категории, отображенные в гистограмме. Используйте setdiff, чтобы сравнить эти два значений свойств и удалить любую категорию из Data, который не находится в Categories. Затем удалите весь получившийся undefined категориальные элементы от данных, оставив только элементы в отображенных категориях.

h.ShowOthers = 'off';
cats_to_remove = setdiff(categories(h.Data),h.Categories);
h.Data = removecats(h.Data,cats_to_remove);
h.Data = rmmissing(h.Data);

Нормализация теперь базируется только на трех остающихся категориях, таким образом, эти три панели добавляют к 1.

Смотрите также

| |

Была ли эта тема полезной?