爬山的骑行者——动态的可视化进度图
这个图表可能会又一次刷新你的三观!真是只有想不到,没有做不到!先什么也别说,上图看看再说,如下图1所示。
图1
在目标曲线上有两个骑车的小人,其中灰色骑行者代表按计划进度的执行者,而绿色骑行者代表实际进度的执行者。刚开始,绿色骑行者落后于灰色骑行者,表明实际进度滞后;越往后,绿色骑行者超过灰色骑行者,表明实际进度提前了。在图表的右下方,同时使用文字说明了进度超前或落后的时间,以及计划结束的日期。
这是在Chandoo.org的网站上看到的一个图表,感觉到很有意思,于是重点进行了研究,并将图表进行了汉化,有兴趣的朋友可以在该网站上下载图表工作簿,或者在本公众号底部发送消息:
骑行图
下载汉化了的图表工作簿。
下面简要介绍一下这个图表是怎样绘制的。
绘图数据
当你有一个大的目标应该在几天内完成时,使用这个图表是合适的。图表数据如下图2所示。
图2
数据在名为“progress”的表中,其中头3列数据是输入的,最后1列通过公式计算来得到累计目标值。在单元格E4中的公式为:
=SUM(E3,[@目标])
向下拉即可。
计算山和骑行者的坐标位置
山是一个简单的XY散点图,progress表中的日期列为其X轴值,目标累计列为其Y值。
为了找到骑行者的坐标,我们设置了两组值:
1.实际骑行者的位置,基于实际已完成的工作数。
2.目标骑行者的位置,基于应该完成的工作数。
实际骑行者位置:
Y值(实际完成):简单地使用SUM(progress[实际])
X值(对应的日期):需要根据设定的目标找到与实际进度相对应的日期。为此我们需要确定:
对应的行号:使用MATCH()函数,我们在目标累计列中找到与目前完成的进度相匹配的值。
接着,我们使用INDEX公式找到两个日期,在这两个日期之间完成进度。
最后,我们使用简单的计算在这两个日期之间插入相应的日期。
目标骑行者位置:
Y值(目标):使用VLOOKUP或INDEX+MATCH,最新日期作为目标
X值(日期):这只是上面计算的对应的行号中的日期。
创建图表
步骤1:创建代表山的XY散点图
在XY散点图中,X值为progress[日期],Y值为progress[目标累计]。绘制的图表如下图3所示。
图3
步骤2:添加目标骑行者和实际骑行者
在图表中再添加两个系列,使用上面计算的X和Y值作为目标骑行者和实际骑行者,如下图4所示。
图4
步骤3:使用骑行者图片替换点
从网上或者哪个地方找到剪贴图,将其粘贴到工作簿中。移除任何背景,将图片旋转30度左右,进行一些适当的格式,如下图5所示。
图5
按Ctrl+C复制骑行者的图片,单击图表中的点,按Ctrl+V粘贴图片,如图6所示。
图6
步骤4:移动骑行者使其落在山坡上
因为Excel将点放置在线上,所以骑行者图片也会居中。因此,图表看起来像把骑行者埋了一半在山上。在这里,对Y值加上一个偏移量,示例中为7。具体的偏移量了决于图表和图片的大小。此时的图表,如下图7所示。
图7
我们可以在图表中添加更多的信息,反映当前进度和目标进度的状态,如下图8所示。
图8
这个图表没有使用VBA,全部使用公式进行计算值,非常值得细细研究。