概述
先来看一个效果:(动画大小:3M)
随着鼠标滚动,一群密集粘连的热力地图逐渐被展开成大小不一的色点,这满足了一个从宏观到微观的展示效果。
效果说明:
- 在全球鸟瞰角度,应该看到中国区域被凸显出来。(单这一功能,现有PBI地图组件就很难实现)
- 中国的城市应该显示中文
- 继续鸟瞰下去,中国显示热力分布,并隐藏中国背景图层
- 继续放大显示,则可以看到 集群 (就是相对扎堆的店铺)
- 继续放大显示,则可以看到不同的店铺被显示出来并由气泡大小反映其销售额以及颜色表示其所在的区域(如:省份)
整个过程平滑过渡,完美显示了整个地图。
这里需要使用Power BI的自定义视觉对象:MapBox。这是个很强大地图可视化工具,本文以该实际案例为背景来说明MapBox与之结合的使用。
案例背景:考虑一个奶茶店连锁品牌在全国甚至全球有线下店(点),并形成销售额,那么如何使用地图可视化来反映。
案例难点:看看用默认可视化的效果:
问题很明显,由于奶茶店几乎可以分布在全国的每一个城市,甚至是三级县级市,而且可能一个城市就有N家,所以这样的效果是无法接收的。
所以,我们考虑一种渐进式的地图结构。这类似于网页的布局,当用户在WEB页面查看是大型布局,当逐渐缩窄浏览器窗口时,布局自动缩放到合适的布局。这要求做到两点:
- 在默认情况采用的布局模式。
- 在缩放到一定程度后采用另一种布局模式。
- 且以上过程应该在一个地图上完成。
我们请出地图可视化领域的神器:MapBox。
MapBox 注册及准备使用
可以在: https://www.mapbox.com/ 注册一个自己的帐号。
由于这个是专业级产品,它考虑全球的地图,当然是 收费 产品,但其价格模式还算厚道,提供了 50000次/月 的免费阶段,也就是如果地图被用户查看的频率不超过这个量级,就是免费的。此后按照使用量收费。
相信具有刚刚所说的全国奶茶店连锁的企业如果需要专业的地图可视化,也可以可以考虑的,对于中小型企业,例如:APP活跃用户点,运营部来查看的话,那几乎是可以在免费区域的。
注册好,如下:
这里有一个Access tokens,这个token与您的帐号对应,显然是用来计算收费的。所以:不要把你的帐号token给其他人哦。
在Power BI中使用MapBox
MapBox在PowerBI中是自定义视觉对象,从市场获取如下:
在Power BI Desktop中,使用如下:
这要求数据包括:经纬度以及数值,当然可以使用扩展的一些字段,如颜色分类等。
只需要:
- token(已经得到)
- 使用token
- 填入经纬度
效果如下:
打开热力图效果:
根据算法,会将密集的点显示成热力形式。
对于一般的可视化也就可以了,但这距离预期效果还有差异。
调整MapBox效果
MapBox在Power BI中的效果主要包括:
- Circle(大小)
- HeatMap(热力图)
- Cluster(集群)
对其自定义设置,体现在缩放到不同级别来显示不同的模式。由于缩放是通过滚动鼠标滚轮体现的,也就是说,当鼠标滚轮滑动放大的一定程度的时候应该显示或大小,或热力,或集群的模式,当然也可以同时显示。由于大小,热力与集群是三种不同的模式,如果同时显示会让地图变得混乱,当然这也是默认的效果,如下:
所以,应该按照整体设置,大小,热力与集群依次设置地图,以下分别说明。
注意:这里先关闭 大小,热力与集群 随后依次打开进行设置。
选择一种地图效果
选择一种喜欢的风格。这里值得注意的是,可以选择自定义的效果,这里稍后介绍,这个自定义也是MapBox真正强大的地方所在。
设置大小
在上一步选择一个浅色的地图,并对其设置如下:
设置包括:
- Radius(初始半径):1px
- Zoom scale factor(放大因子):10
- Min Color(最小值颜色):无需设置,因为已经按颜色分类,此处不再起作用。
- Med Color(中间值颜色):同上。
- Max Color(最大值颜色):同上。
- Opacity(透明度):30,表示30%。
- Stroke Opacity(边线透明度):0,表示0%,也就是无边线效果。
值得强调的是,这样的设置可以制作很多互相重叠却易于区分的小气泡,气泡的密集度可以通过放大因子控制。最重要的一个属性这里单独介绍,那就是:Min Zoom 与 Max Zoom。这两个属性指示从 在哪个缩放区间 按这种模式显示。
可以看出,缩放区间有从0到22级,也就是说,滚动鼠标滚轮可以依次放大缩放22次,这里在不同的放大状态下也就对应了不同的Zoom,Min Zoom与Max Zoom就表示这个区间。为了让整个地图有流畅显示。一般可以这样设置:
- 模式1:Min Zoom = 0, Max Zoom = 3
- 模式2:Min Zoom = 3, Max Zoom = 5
- 模式3:Min Zoom = 5, Max Zoom = 22
这样,就成了一套带层级的显示效果。具体到这个案例,如下:
- 热力:Min Zoom = 0, Max Zoom = 3
- 集群:Min Zoom = 3, Max Zoom = 5
- 大小:Min Zoom = 5, Max Zoom = 22
也就是实现从热力到集群到大小的三阶层级,现在正在设置大小,因此设置为Min Zoom = 5, Max Zoom = 22。提示:一旦设置完成,会发现地图的气泡突然消失了,因为当前缩放未达到5,所以不会显示。
设置热力
启用热力模式,并设置为Min Zoom = 0, Max Zoom = 3
设置集群
启用集群模式,并设置为Min Zoom = 3, Max Zoom = 5
此时效果如下:(动画大小:3M)
对于群集,需要说明几个重要属性:
- Cluster Radius(集群半径):这个数字决定在多大范围内计算集群数量。
- Cluster Max Zoom(集群点最大放大级别):这个数字决定了集群点的密集性。
综合上述两个属性可以绘制出不同的集群形态,实际测试感觉尚未完全理解它们的精确作用,或者也许其本身也存在BUG,但确实可以通过配合,设置出合适的效果。
至于调整颜色之类的属性就不再说明。
至此,已经可以设置整个MapBox地图了。细心的伙伴会发现,这和文章开始的地图有两大差异:1)没有显示中文;2)没有中国地图轮廓。
MapBox Studio
实现中文以及设置中国地图轮廓,则必须使用更高级的玩法:MapBox Studio。这是用来设置自定义地图的,感兴趣的伙伴可以在MapBox网站打开Studio自己研究如何设计地图,这里提供了强大的设计功能,如下:
可以看到,这里可以对地图的所有缩放级别进行设置,在本例中可以看出已经使用黑色粗线描绘了国家边境线,已经用红色线描绘了城市边界,并设置了中文显示。
还可以直接通过图层来定义城市,建筑以及河流的颜色等信息。MapBox提供了强大的缩放级别,通过自定义的设置可以简化地图,使地图更适合来显示信息,如下:
当所有的街道都用淡色显示后,特别容易在PowerBI中凸显可视化效果,如下:
关于如何详细使用MapBox Studio请参考其官方文档。
总结
MapBox 给地图可视化提供了强大功能支持。其优势包括:
- 自定义地图
- 热力
- 集群
- 密集气泡
- 缩放分层
- 加载速度很快
赶快自己尝试吧。