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

В этом примере показано, как использовать 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 функции использовали только привязанные данные для вычисления нормализации. Это поведение означало, что, если некоторые данные оказались вне интервалов, они были проигнорированы в целях нормализации. Однако в 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);

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

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

См. также

| |