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