exponenta event banner

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

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

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

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

См. также

| |