控制范畴直方图显示

这个例子展示了如何使用直方图有效地查看分类数据。您可以使用名称-值对'NumDisplayBins',“DisplayOrder”“ShowOthers”更改分类柱状图的显示。这些选项帮助您更好地组织数据,并减少绘图中的噪音。

创建分类直方图

示例文件outages.csv包含代表美国电力公司中断的数据。文件包含六列:地区,OutageTime,损失,顾客,RestorationTime原因

读了outages.csv文件作为一个表。使用“格式”选项来指定的那种每一列都包含数据:分类('%C')、浮点数('%F'),或日期时间('%d')。索引数据的前几行看到的变量。

data_formats =' % C % D % f % f % D % C ';C = readtable (“outages.csv”,“格式”,data_formats);:first_few_rows = C (1:10)
first_few_rows =10×6表地区OutageTime客户流失RestorationTime原因_________ ________________ ______ __________ ________________ _______________西南2002-02-01 12:18 458.98 1.8202e + 06 2002年2月7日16:50,冬季风暴东南2003-01-23 00:49 530.14 2.1204e + 05的NaT冬季风暴东南2003-02-07 21:15 289.4 1.4294e + 05 2003-02-17 08:14冬季风暴西2004-04-06 05:44 434.81 3.4037e + 05 2004-04-06 06:10设备故障中西部2002年3月16日06:18 186.44 2.1275e + 05 2002-03-18 23:23严重的风暴西2003-06-18 02:49 0 0 2003-06-18 10:54攻击西2004-06-20 14:39 231.29的NaN 2004-06-20 19:16设备故障西2002-06-06 19:28 311.86 NaN的2002年6月7日00:51设备故障东北地区2003-07-16 16:23 239.93 49434 2003-07-17 01:12火中西部2004-09-27 11:09 286.72 66104 2004-09-27 16:37设备故障

绘制类的直方图原因变量。指定一个输出参数来返回直方图对象的句柄。

h =直方图(C.Cause);包含(“故障原因”)ylabel('频率')标题(“最常见的停电原因”)

更改直方图的归一化,以使用“概率”标准化,显示每个停机原因的相对频率。

h。归一化=“概率”;ylabel (的相对频率)

改变显示顺序

使用“DisplayOrder”选项排序从最大到最小的箱子。

h。DisplayOrder =“下”;

截断显示的条数

使用'NumDisplayBins'选项仅在绘图中显示三个条形图。显示的概率不再为1,因为未显示的数据仍被考虑在内,以进行归一化。

h。NumDisplayBins = 3;

总结排除数据

使用“ShowOthers”选项汇总所有被排除的条,以便显示的概率再次加为1。

h。ShowOthers =“上”;

限制标准化显示数据

在R2017a之前直方图histcounts只有使用功能扔进垃圾箱用于计算标准化的数据。这种行为意味着,如果一些数据最终超出了容器,那么为了规范化的目的,将忽略这些数据。然而,在MATLAB®R2017a中,行为改变为始终使用输入数据中的元素总数进行标准化。新的行为更直观,但是如果您喜欢旧的行为,那么您需要采取一些特殊的步骤来限制仅对已丢弃数据的规范化。

您可以将概率归一化限制为直方图中显示的数据,而不是对所有输入数据进行归一化。简单的更新数据属性,以删除其他类别。的类别属性反映柱状图中显示的类别。使用setdiff以比较两个属性值并删除任何类别数据不在类别。然后移除所有的结果未定义的数据中的分类元素,只在显示的类别中保留元素。

h。ShowOthers =“关闭”;cats_to_remove = setdiff(类别(h.Data), h.Categories);h。Data = removecats (h.Data cats_to_remove);h。Data = rmmissing (h.Data);

规范化现在只基于剩下的三个类别,因此这三个栏加起来就是1。

另请参阅

||