В этом примере показано, как использовать 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
функции использовали только привязанные данные для вычисления нормализации. Это поведение означало, что, если некоторые данные оказались вне интервалов, они были проигнорированы в целях нормализации. Однако в R2017a MATLAB ® поведение изменялось, чтобы всегда нормализоваться, используя общее количество элементов во входных данных. Новое поведение более интуитивно понятно, но если вы предпочитаете старое поведение, то необходимо сделать несколько специальных шагов, чтобы ограничить нормализацию только связанными данными.
Вместо нормализации по всем входным данным можно ограничить нормализацию вероятности данными, которые отображаются в гистограмме. Просто обновляйте Data
свойство объекта гистограммы для удаления других категорий. The 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.