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