matlab直方图显示,控制分类直方图的显示

创建分类直方图

示例文件 outages.csv 包含表示美国电力中断情况的数据。该文件包含六个列:Region、OutageTime、Loss、Customers、RestorationTime 和 Cause。

以表的形式读取 outages.csv 文件。使用 'Format' 选项指定每列包含的数据类型:分类 ('%C')、浮点数 ('%f') 或日期时间 ('%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')

2346fe3762d81889afc58ef945488d07.png

将直方图的归一化方式更改为使用 'probability' 归一化,它显示每种断电原因的相对频率。

h.Normalization = 'probability';

ylabel('Relative Frequency')

291e4bea62a01b034a2f946537dffc7b.png

更改显示顺序

使用 'DisplayOrder' 选项按从大到小的顺序对 bin 排序。

h.DisplayOrder = 'descend';

ae6dc23f9da00c72f8f10dbb0502d998.png

截断显示的条形数

使用 'NumDisplayBins' 选项仅在绘图中显示三个条形。由于对未显示的数据仍考虑了归一化,因此所显示的概率相加不再为 1。

h.NumDisplayBins = 3;

51bf4bdd1f2c4acd9ab017987df222c1.png

将被排除的数据相加

使用 'ShowOthers' 选项合并显示所有被排除的条形,以使所显示的概率相加后再次等于 1。

h.ShowOthers = 'on';

6bef24f19e08315a5262d4d486d5aeff.png

限制只对显示数据进行归一化

在 R2017a 之前的版本中,histogram 和 histcounts 函数仅使用经过 bin 处理的数据来计算归一化。这种行为意味着如果部分数据最终位于 bin 外面,则在归一化时会被忽略。但在 MATLAB® R2017a 中,该行为改为始终使用输入数据中的总元素数目来进行归一化。这种新行为更为直观,但如果您更愿意采用旧行为,则需要采取几个特殊步骤来限制仅对经过分 bin 处理的数据进行归一化。

您可以限制只对直方图中显示的数据实施概率归一化,而不是对所有输入数据均进行归一化。只需更新直方图对象的 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);

a11d1ef7000dd59f750904272c6cb1c4.png

归一化处理现在仅基于剩余的三个类别,因此这三个条形相加等于 1。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值