当我们利用excel画散点图时,假如数据除了下x,y轴数据外,还有第三种属性数据,那么我们就需要赋予每个散点不同的颜色或者大小来实现第三种属性数据的区分,这里我介绍一个通过颜色来分区第三属性的方法,类似于MATLAB的colorbar。
方法主要参考GitHub上的代码:GitHub - DanGolding/Scatter-plot-with-color-grading-in-Excel
1. GitHub上分享了作者写好的.bas文件的VB代码,这个文件中包含了实现我们需求的所有功能,但是这个.bas文件无法直接下载,所以我们可以直接复制所有代码将其复制到新建的文本文件中,保存后再把扩展名改为.bas。
2. 然后我们在Excel中通过Alt+F11调出VisualBasic应用程序的编辑器,导入.bas文件,然后将Excel表格保存为基于XML且启用宏的.xlsm文件。
3. 接下来我们需要制作我们所需要的颜色带colorbar,作者给我们提供来个示例的colorbar,我们可以直接下载需要colorbar的.txt文件。
4. 然后我们需要在excel中新建我们的colorbar,这一步通过运行编辑器中导入代码的MakeMap,代码会在excel中新建一个sheet,表格的第一列是txt文件中的颜色代号,另外B:D列是每种颜色对应的RGB分量值,后面还生成了对应的颜色条。
MakeMap中需要定义新建sheet的名称以及txt文件的名称(需要注意的是txt文件最好是放在C盘,如果在D盘可能会出现读取失败),读取txt文件时需要的是完整的txt文件路径,不然也会读取失败。
colorbar创建结果:
5. 接下来通过我们的实验数据插入一个散点图,这里我们通过DEM数据和SIF数据分别作为X和Y轴,然后我们通过颜色来标识海拔这个属性。
6. 下面我们运行colourChartSequential代码来给散点着色,这里我们要输入包含实验数据的表格作为操作表格,然后选择温度所在的数据列作为着色的依据。
7. 颜色添加完之后我们还要给图添加一个colorbar,运行MakeColourBar代码,以之前创建的色带表格名作为操作表,代码会新建另一个表格。另外需要设置colorbar标签数量和标签位置。需要注意的是色带一共256种颜色,在设置标签位置是选定标签数量不一定能被256整除,但是excel位置必须要是整数,所以我们需要对位置计算结果取整, VB除法计算中使用 ' \ ' 代替 ‘ / ’ 可以实现这一功能。
colorbar生成后,在下面分别输入或者使用公式计算温度最大最小值,colorbar标签就会自动出现。
然后我们复制colorbar所在区域,在图表右侧选择链接图片形式粘贴即可
最后,我们使用Excel制作出一幅与Matlab差不多效果的结果图:
Ending...