在有限的工作时间中,就靠此文来搞定地图可视化了。
以地图的形式进行可视化是一个很重要的领域,例如各种省份本来就表现成地图,还有篮球场,场馆等自定义的形式,其共同点都是:以二维空间打底,在上面看数据的情形。
为什么要实现地图可视化
关于可视化的原理,请参考一篇非常重要的文章:真正的商业图表可视化之道-布道篇,这里揭示了一个重要的原理:
为了更好的传递信息,需要充分利用人类的左脑和右脑的处理器能力。
人类左脑是:CPU(单线程),负责处理逻辑指令,包括:文字,声音,逻辑等;
人类右脑是:GPU(单线程),负责处理图形指令,包括:图形,图像,照片,空间想象等。
所以,结论来了:其实地图可视化从本质上一样可以转化成按类分布的条子图,而条子图并为充分利用右脑的空间处理能力和记忆能力。为了让人可以几乎不用左脑的做出第一反应,那用真实地图表示地点确实比用分类方式可以更好的调用人的右脑资源的。因此,可以做地图可视化的,应该尽可能考虑到这一点,让用户享受右脑GPU的计算能力而节省左脑CPU。
实现地图可视化的期望
先从PowerBI的一个基础地图来说起:
这个地图确实直观的反应了空间位置及信息,如:黑龙江的销售额。
但这个地图有几个不完美的地方:
- 没有直接显示各个地区的数值,需要移动鼠标,交互不完美。
- 除了中国地图以外的信息都是无用的,存在信息荣誉,不完美。
- BING地图需要网络以及加载时间并显示路线等,交互不完美。
当然这里面最大的痛在于:没有直接显示各个地区的数值。
那么有没有完美的解决方案呢?
如果没有完美的解决方案,在不同的场合有没有更合适的解决方案呢?
这就是我们要研究的主题。
接下来,我们分别来剖析一下不同的一些方案及缺陷以及弥补措施,可以供大家参考。
PowerBI默认地图
首先就是对于上面的这个地图,我们来设计对于最大痛点的补救措施,补救的效果如下:
优势:可以多角度分层级显示度量值。
缺陷:
1、在线BING地图需要识别
2、无法显示标签
3、地区其他区域并非必要
补救:
自定义列显示标签。
补救的具体方式是:
新建自定义列:
省份销售额 =
FORMAT(
CALCULATE(
[订单销售额] ,
FILTER( ALL( 'tb地区' ) , 'tb地区'[省/自治区] = EARLIER( 'tb地区'[省/自治区] ) )
) / 1000 , "0.0"
) & "K"
然后将这列的数据分类设置为:
这样就可以骗过PowerBI的解析器,以为这个文本是个省份,然后我们把这个省份放到实际的省份下面,并钻取下去,那PowerBI的解析器就以为这是这个省下面的城市,并显示出来,如下:
这里用的技巧是去欺骗PowerBI解释器,大家看到了,有时候善意的欺骗能得到良好的效果。
这种方式在一些场合还是很好的,因为这个地图可以显示着色的气泡,能反映很多信息。
PowerBI着色地图
与PowerBI默认地图几乎一样,PowerBI着色地图如下:
优势:可以多色彩显示度量值大小。
缺点:
1、在线BING地图需要识别。
2、无法显示标签。
弥补方式:无。
可惜的是,这种地图的痛点依然是无法直接显示所有的数值,而且我没有发现对它的弥补方案。
PowerBI形状地图
PowerBI提供了一种清爽的地图表示方式,叫形状地图,如下:
除了地图没有额外的荣誉信息,或者看到它更清爽的样子:
这也是大家投票多数认为比较好的形式:同色系颜色深浅的形状地图来实现地图可视化。而且在回复中看到了很专业的评价:同色系颜色的深浅相对于多种颜色而言更容易被大脑处理。问题又来了,这里没显示数字啊,所有的数字都没有显示,而且遗憾的是,PowerBI没有提供这个设置啊,我们做了简单的补救是这样的:
我们在它的旁边设计了放大镜区域以及TOP5的区域。这能让人抓住重点,也是一种可选的补救方式,而用户在点击色块的时候,放大镜会动态聚焦到该区域并显示数值也是一种不错的交互体验。实现方法很简单,就是做两个地图,用第一个来筛选第二个,并做一个度量值显示当前的额数值即可。
好的,如果您坚持说这种方式不完美,因为根本没有直接显示全部,我也承认,我们只好另想办法了。
自定义地图
自定义地图就完全是由自己来实现某种地图了,整个思路一下子打开了,它不仅仅适用于地理位置的地图,适用于任何地图以及你想强迫表示成地图的内容,如下:
当然它也可以显示成这样:
所以,它可以小清新的显示出全部标签。
这是使用这个自定义地图实现:
地址为:https://okviz.com/synoptic-panel/ 他们的标志性作品相信很多人已经看过:
其实,我们还可以做的自定义地图例如:
相信您已经能自行脑补出您能做的地图了。
于是我用Excel快速制作了一个丑陋的Demo来看看:
这里的块块都可以可以点击交互的,可以脑补出用Excel的表格作为表格框架可以做出很多图形。
关于这个可视化元素的详细使用可以参考官方文档以及我会在后续的实际案例中进一步分享。
返回我们的话题,地图可视化,这里我们就可以添加类别标签和数值了。而且它有很多自行一的选项:
这里特地圈出了 Enchose in area ,你能猜到它表示强制让数据标签显示在自己的区域里,要不就别显示。果然是SQLBI.com的作品,考虑得够细致。
ArcGIS Maps for PowerBI
很多人都看到了这个可视化是内置在PowerBI里的,也许您没用成,那我简单说明下其中的一些坑,先来看效果:
先说它的强大之处,可以按各种模式显示,可以标记点,以及圈选,还可以按半径和车程来设置范围,例如:
这里以中国江苏南通市为标记点设置了2小时的车程距离。这确实在某些特定的场合是很有意义的。
因为这可以说是一个国际通用的终极地图解决方案,所以在中国本地化方面就存在很多不易用的障碍了,包括但不限于:
- 高级的要收费
- 地名不识别中文,国际上看中国的城市,有英文名的用英文名,没有的用拼音,所以您得知道哪些城市用英文,哪些用拼音,另外,ShanXi是表示山西还是陕西,因此我们要处理很多的细节问题
- 网络加载延迟
所以从实际的使用角度,除了有设置车程,圈选等其他地图根本不具备的硬性要求,暂时不会考虑使用这个神器,对付它需要更多的耐心和处理好所有的细节问题,有兴趣的伙伴可以自己探索。
多级省份,市区地图怎么办
有很多伙伴问到过显示一个市的所有县之类的问题,其实我已经揭示了一个终极的好用方案,就是自定义地图。只要您有地图的样子,就可以制作自定义的区块,然后建立区块与名称的对应来实现效果,大家注意看:
这个中国地图是我自行抠图生成而非json数据文件之类的,所以,所有的省,市,县都可以这样操作,而且这个过程SQLBI.com已经提供了工具,是一项不难而有有意思的工作,不妨一试。
当然,如果是通用的一些省份,还是可以使用形状地图并加载特定的数据,例如:
这里使用anhui.topojson的数据。设置如下:
值得一提的是,topojson和json地图数据的格式定义上是有区别的,但幸好是可以转换的,所以这些个坑都可以走过去的。另外,之前PowerBI极客高飞老师也发布过类似文章,大家可以联合参考下。另外,这里提供下资源的下载方式:链接:https://pan.baidu.com/s/1jJ4YEPK 密码:t0ef。你直接可以使用这些资源来制作形状地图。
总结
地图可视化在数据可视化中拥有重要的一席之地,而此文基本解决了我处理大部分工作中涉及到的问题,如果出现特性的复杂问题,再针对它特别处理。尤其值得重复的是:自定义地图,它真的可以做很多事,靠的是想象力。
网友评论