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