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

В этом примере показано, как использовать 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')

Figure contains an axes. The axes with title Most Common Power Outage Causes contains an object of type categoricalhistogram.

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

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

Figure contains an axes. The axes with title Most Common Power Outage Causes contains an object of type categoricalhistogram.

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

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

h.DisplayOrder = 'descend';

Figure contains an axes. The axes with title Most Common Power Outage Causes contains an object of type categoricalhistogram.

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

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

h.NumDisplayBins = 3;

Figure contains an axes. The axes with title Most Common Power Outage Causes contains an object of type categoricalhistogram.

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

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

h.ShowOthers = 'on';

Figure contains an axes. The axes with title Most Common Power Outage Causes contains an object of type categoricalhistogram.

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

До 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);

Figure contains an axes. The axes with title Most Common Power Outage Causes contains an object of type categoricalhistogram.

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

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

| |