今天仍然是一个经济学人的图表案例,而且从方法上来讲,略有难度,挺费工夫。
原图上这样的,风格一如既往,呈现的数据是一个季度时间序列数据列,折线图,添加了时间趋势线。
最重要的特色是实际值与趋势值之间使用颜色带隔开,高于趋势值填充蓝色,低于趋势值填充红色。
不要小看这个小小的细节,它一下子让整幅图所呈现的信息简单易懂,清晰明了,在保持美观性的同时又不是专业性,不愧为财经领域标杆级的杂志,图表细节处理上尽显专业性。
其实该图表的核心元素——两条折线(一条是实际值折线图,一条是时间趋势线),制作起来相对容易。
只需一列实际数据,一列直线拟合数据即可。(折线图添加拟合直线)。
可是这样无法模拟两条线之间的颜色区域,所以我的第一直觉是使用三列数据做重叠面积图来模拟该案例:
三列数据分别是实际值、拟合直线数据(在添加拟合直线时同时勾选显示公式,利用公式结合函数,可以则算是该实际时间序列数据的直线拟合点)、以及实际值与拟合直线数据的较低值。
实际值是通过案例原图提取出来的近似值;
拟合值是根据拟合直线的公式结合函数推算出来的;(=-0.315*x+11.596)
实际值与拟合值两者的低值是通过MIN(实际值:拟合值)计算而来
三组数据同时添加制作重叠面积图,并设置第三个序列(实际值与拟合值两者的低值)颜色为背景色。
大致模拟出来原图案例:
可是现在的问题是,第三个序列填色之后会阻挡底图的白色网格线,这就无法呈现原图原貌,虽然可以通过更复杂的方法实现白色网格线在图顶层(但是复杂度较高)。
这里我抛弃了这种做法,想起来之前在在学刘万祥老师的网易云课程——《向经济学人学做图表》的课程里介绍过类似的双折线图交叉颜色带的案例,果然该图也可以通过老师的方法实现,顿时感觉很欣慰。
该方法的大体思路如下:
整体上需要五列数据(不算横轴标签列):
两条折线图数据(实际值、拟合值)
三列辅助列:实际值与拟合值两者较低值、实际值低于拟合值、实际值高于拟合值。
实际值与拟合值两者较低值:
=MIN(C2:D2)
实际值低于拟合值:
=IF(D2>C2,D2-C2,NA())
实际值高于拟合值:
=IF(D2<C2,C2-D2,NA())
五个序列添加之后,前两个序列做折线图,后三个序列转换为堆积面积图。将第三个序列填充透明色隐藏。效果如下:
接下来修改图表区、绘图区、线条色与填充色与原案例图一致:
选择单元格区域并规划至合适的布局,将图表锚定到目标单元格区域;
选择单元格区域并使照相机牌照引用。
对比一下原图与复制的案例演示图:基本上还原了图表的原貌: