Esta página aún no se ha traducido para esta versión. Puede ver la versión más reciente de esta página en inglés.

Controlar la visualización de un histograma categórico

Este ejemplo muestra cómo utilizar histogram para ver de manera efectiva los datos categóricos. Puede utilizar los mismos pares nombre-valor 'NumDisplayBins', 'DisplayOrder' y 'ShowOthers' para cambiar la forma en la que se muestra un histograma categórico. Estas opciones le ayudan a organizar mejor los datos y a reducir el ruido de la gráfica.

Crear un histograma categórico

El archivo de ejemplo outages.csv contiene datos que representan los cortes de suministro de las compañías eléctricas en Estados Unidos. El archivo está compuesto de seis columnas: Region, OutageTime, Loss, Customers, RestorationTime y Cause.

Lea el archivo outages.csv como una tabla. Utilice la opción 'Format' para especificar el tipo de datos que contiene cada columna: categóricos ('%C'), números en puntos flotantes ('%f') o fecha/hora ('%D'). Indexe las primeras filas de datos para ver las variables.

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

Represente un histograma categórico de la variable Cause. Especifique un argumento de salida para devolver identificadores al objeto del histograma.

h = histogram(C.Cause);
xlabel('Cause of Outage')
ylabel('Frequency')
title('Most Common Power Outage Causes')

Cambie la normalización del histograma para utilizar la normalización de 'probability' que muestra la frecuencia relativa del motivo de cada corte.

h.Normalization = 'probability';
ylabel('Relative Frequency')

Cambiar el orden de visualización

Utilice la opción 'DisplayOrder' para clasificar los bins del mayor al menor.

h.DisplayOrder = 'descend';

Truncar el número de barras mostradas

Utilice la opción 'NumDisplayBins' para mostrar solo tres barras en la gráfica. Las probabilidades mostradas ya no se añaden a 1, puesto que los datos que no se muestran se siguen teniendo en cuenta para la normalización.

h.NumDisplayBins = 3;

Resumir datos excluidos

Utilice la opción 'ShowOthers' para resumir todas las barras excluidas, de manera que las probabilidades mostradas se vuelvan a añadir a 1.

h.ShowOthers = 'on';

Limitar la normalización para mostrar datos

Antes de la versión R2017a, las funciones histogram e histcounts solo utilizaban datos combinados para calcular las normalizaciones. Este comportamiento implicaba que, si algunos de los datos acababan fuera de los bins, se ignoraban para fines de normalización. Sin embargo, en la versión R2017a de MATLAB®, el comportamiento cambió para normalizar siempre con el número total de elementos en los datos de entrada. El nuevo comportamiento es más intuitivo, aunque, si prefiere el anterior, ha de seguir unos pasos específicos para limitar la normalización solo a los datos combinados.

En lugar de normalizar en todos los datos de entrada, puede limitar la normalización de probabilidad a los datos que se muestran en el histograma. Solo tiene que actualizar la propiedad Data del objeto de histograma para eliminar las otras categorías. La propiedad Categories refleja las categorías mostradas en el histograma. Utilice setdiff para comparar los dos valores de propiedad y eliminar cualquier categoría de Data que no se encuentre en Categories. A continuación, elimine todos los elementos categóricos undefined resultantes de los datos y deje solo los elementos de las categorías mostradas.

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);

La normalización ahora se basa solo en las tres categorías restantes, de modo que las tres barras se añaden a 1.

Consulte también

| |