14亿中国人在世界的位置
很多年前,我在网上看到过一张让我震撼的数据图。那是一张用“面积守恒”画出来的人口金字塔,越往上走,国家的人均 GDP 越高。最绝的是,图形的面积代表了真实的人口体量。数据图形选择
前几天在微信群跟人讨论这个话题时,我突然又想起了这张图。可仔细搜索一番,却没能找到那张图,只找到一张近似的世界银行2011的图片,但这张图其实跟我印象那种也差距很远。这张只是横向将各国GDP按人均数值排列,其实看不出那种震撼的感觉。 width="1000"
height="771"
>
</a>
width="948"
height="1245"
>
</a>
width="1080"
height="1752"
>
</a>
数据图制作过程
数据图制作过程比想象中麻烦很多。一开始,我想着用 Excel 和 WPS 来画,毕竟像 WPS 会员有非常多的模板可供选择。但尝试一番后发现一个比较严重的问题,就是图形与数据源很难匹配上。 我使用的数据源是世界银行最新的人口与人均GDP数据,在这里边,它细分了217个国家和经济实体,以及47个区域或经济组织。其中,大的国家比如中国、印度,人口都有 14 亿,而小的国家或地区很多人口都只有几十万甚至几万人。最大值与最小值,相差达到数万倍。这种情况下,对于 Excel 图表制作真是一个灾难。 后来,我还是老实换用 Python 来制图,毕竟这过程中需要调整的参数很多。 比如说,在一个普通大小的数据图中,不可能做到把每个国家和地区名字都显示出来,那到底展示哪些国家名称,就是一个值得研究的问题。考虑到每个国家人口最终展现在图像上面积的巨大差距,最佳方案显然是按照最终展示面积比例来设置。如果面积过小,则无法显示了。 比如说,将全球人口画到金字塔上时,需要严格计算每一个国家地区的人口数据在图像中的占比。而这种占比,实际上需要对应到金字塔中间每一级所对应梯形的面积(除了最顶端的是三角形面积)。 在此过程中,经过数十次调整和绘制,最终我做了三个版本的图出来。按人均GDP排序的人口金字塔图
这是最接近我记忆中样貌的第一版图。当我把最新数据塞进这个动态生成的金字塔模型时,视觉上的冲击力非常直观。在这张图里,全球人口被重新洗牌,从下往上按照人均富裕程度层层码放。 width="1080"
height="1620"
>
</a>
按人均GDP排序的人口柱状图
这是我制作的第二张图。虽然金字塔图极具视觉冲击力,但它在数学视觉上有一个不可避免的物理缺陷,为了在逐渐收窄的顶部保持“面积守恒”,高人均 GDP 国家(如美国、欧洲各国)的纵向高度被无形中拉长了。这容易让人产生一种错觉,误以为这些国家的人口占比也很大。 width="1080"
height="1798"
>
</a>
人口金字塔和GDP对比图
既然单一维度的图形总有妥协,那我干脆将它们合二为一,做了一次更大胆的尝试,左边保留人口金字塔,右边则用来展示 GDP 总量。 这也就是我个人觉得在逻辑上最硬核的一张。 width="1080"
height="1698"
>
</a>