matlab 中heatmap,MATLAB数据可视化[2]:heatmap

All comments and opinions expressed on Zhihu are mine alone and do not necessarily reflect those of my employers, past or present.

本文内容所有内容仅代表本人观点,和Mathworks无关

在2017a的版本中一个新增的数据可视化功能是热点图heatmap,下面我们就来简单的介绍下。

老板:来来来myc,你生日是什么时候?

myc:我生日是……

老板:别急,让我来猜猜……

老板:我们先取得2000到2014年美国新生儿数据并存至本地

%% Save data

filename = 'birthData.csv';

url = 'https://raw.githubusercontent.com/fivethirtyeight/data/master/births/US_births_2000-2014_SSA.csv';

websave(filename,url);

老板:读入本地数据,将数据可视化

dataArray = readtable(filename)

dataArray =

5479×5 table

year month date_of_month day_of_week births

____ _____ _____________ ___________ ______

2000 1 1 6 9083

2000 1 2 7 8006

2000 1 3 1 11363

2000 1 4 2 13032

2000 1 5 3 12558

2000 1 6 4 12466

...

heatmap(dataArray,'day_of_week','month','ColorVariable', 'births')

31756741cc14298b65d491309b011309.png

myc:天啊居然这么快就可以将数据从获取到最终呈现出来

老板:没错,这就是table类型和heatmap功能的强大之处。

myc:可是……

老板:你看这个数据你发现了什么?

myc:从月份上来说,八九月出生的人最多,从每周来看,周二出生的人最多,周末最少

老板:没错,从月份上来说,很多家庭都会在感恩节到圣诞节假期开始备孕,这和我们很多家庭在春节期间备孕非常相似。

从每周来看这个数据很有意思,这个现象在Martin, et al., 2006这篇报告中有过解释,简单来说就是顺产的宝宝在每天出生的概率都差不多,但是大部分引产和剖腹产是需要和医生预约的,这就形成了周末少,周二多的分布

myc:好有道理啊,可是我…

老板:我们再换个颜色看看全年的分布

cmap = colormap('hot');

heatmap(dataArray,'date_of_month','month','ColorVariable', 'births','Colormap',cmap)

3d199c09f70d689724d78f561e699904.png

myc:哇,可以清楚的看到各大假期的出生人数明显少很多。新年,独立日,感恩节和圣诞节都一目了然

老板:没错,这个图告诉我们,你在9月中旬出生的概率非常大,我猜的对吗

myc:老板你忘记了吗……我原来是来自俄罗斯的实习生…并不是在美国出生的啊!