前言
-
对于二维数据的分析,热力图是一个比较好的手段,通过填充的颜色能直观看出不同变量对结果的影响规律。

上图是横坐标代表pH值,纵坐标代表温度,填色依据反应指数进行标定。
通过上图我们能一眼看出pH值对反应指数的影响比较显著,而温度几乎不产生影响。 -
然而实际上,我们的横坐标或纵坐标不一定是
数值类型变量,此时对横坐标的默认排序并不能有效表达出数据中蕴含的规律。
比如对于离子液体1,研究阴离子和阳离子对粘度的影响,通常我们把阴阳离子分别设置为横纵坐标,根据离子液体的粘度值进行填色。

由于横纵坐标变成字符类型,而阴阳离子对粘度的影响我们事先也不知道,所以得到的填色图显得杂乱无章。
那么怎样得到整齐排布的热力图,并进一步分析阴阳离子对粘度的影响规律?
解决思路及步骤
需要的软件工具
数据分析软件(以Excel为例)
绘图软件(以origin为例)
具体步骤
- 准备矩阵数据
大部分时间我们生成的数据都是XXY数据,如下面表格所示:
| 阴离子 | 阳离子 | 粘度 |
|---|---|---|
| anion1 | cation1 | n1 |
| anion1 | cation2 | n2 |
| anion2 | cation1 | n3 |
| anion2 | cation2 | n4 |
而我们更希望获得的数据形式应该是矩阵的形式:
| 粘度 | cation1 | cation2 |
|---|---|---|
| anion1 | n1 | n2 |
| anion2 | n3 | n4 |
这个转化可以通过Excel的Power Query编辑器进行实现
在Excel的选项卡数据中选择从表格新建查询

打开Power Query 编辑器后,选中需要进行透视2的列,在转换选项卡中点击透视列。

选择粘度作为值列,聚合函数选择不要聚合。

透视之后就能得到我们想要的矩阵数据。


- 分别对阴离子和阳离子进行排序
根据上述步骤分别透视阴离子和阳离子,按照一定的规则对阴离子和阳离子进行排序,我这里采用的是平均数,即特定阴离子与所有阳离子结合对应的离子液体粘度平均值作为该阴离子的排序指标,对阳离子也采用同样的处理。
将阴阳离子排序编号填写在对应的阴阳离子后面,以备后用。
- 通过VLOOKUP函数将列表中阴阳离子替换为序列号
VLOOKUP: 搜索表区域首列满足条件的元素,确定待检索单元格在区域中的行序号,再进一步返回选定单元格的值。默认情况下,表是以升序排序的。
VLOOKUP(lookup_value,table_array,col_index_num,[range_lookup])
lookup_value需要查询的单元格
table_array查询区域,保证想要查询的值在这一区域首列
col_index_num返回查询后对应的单元格的值
[range_lookup]布尔类型变量,false表示精确匹配,true表示近似匹配

具体调用如图所示。
- 再次对数据进行透视,透视的对象为序号,而非阴阳离子名称,获得的二维数据为有序数据,进行绘制能够得到梯级的热力图。

从这张图可以看出比较明显的规律,阴离子和阳离子同时对离子液体粘度有影响。根据图中的颜色,我们也能大概知道哪几类阴离子和阳离子粘度较高,成功挖掘数据中的隐藏信息。
写在最后
这个方法绘制热力图可能稍显复杂,目前python和matlab都有比较好的方法完成这个任务。
本文介绍了如何使用Excel和Origin软件绘制二维数据的热力图,以揭示不同变量间的影响规律。通过Power Query将XY数据转化为矩阵数据,然后对阴阳离子进行排序,利用VLOOKUP函数替换为序号,最终生成有序热力图,揭示离子液体粘度的规律。
840

被折叠的 条评论
为什么被折叠?



