本来用pyecharts做好了地图,但是为了和小伙伴实现多图联动,只能再改成plotly。
跟pyecharts比起来,plotly真的太麻烦了!
拖延了两天,我还是对它下手了。
这是我选用的地图类型的官方教程文档:
https://plotly.com/python/mapbox-county-choropleth/
因为很多图都需要token才能做,所以我们先去搞一个token
点进第一个链接注册个帐号,就来到了这个页面
在account里面我们就能看到自己的token
点击copy就可以复制啦
然后回到地图教程页面
copy一段示例代码
把token换成自己的
就出现了示例代码的效果网页
当然有一些示例是不需要token的,也可以不申请token去试试别的图片,确保没有出现别的问题。在试其他图的时候,我发现自己无法import dash,先去解决了这个问题,确保无token也能实现,然后才去申请了token,试了现在的这个代码。
虽然好像图很好看,但是最麻烦的问题还没有来。怎么把它的数据替换成我们自己的数据?
它要求的数据有两个:
一个是json数据,另一个是一个list
list还问题不大,json数据听上去像是几年前学网页的时候和javascript很像的东西,他们之间确实也能相互转化。但是看到这个要求我人突然傻了,本来以为有了xlsx文件完全莫得问题,没想到给我整这出,还需要json文件,好吧好吧我整!
geojson是为了描绘地图轮廓,比如如果做中国省份地图,就需要china_geojson文件。
世界各国geojson下载链接:
https://files.cnblogs.com/files/firstcsharp/%E4%B8%96%E7%95%8C%E5%9B%BD%E5%AE%B6geojson%E5%A4%A7%E5%85%A8%EF%BC%8C%E5%90%84%E5%9B%BD%E5%9C%B0%E5%9B%BEjson%E6%95%B0%E6%8D%AE%E4%B8%8B%E8%BD%BD.zip
我要做的是世界地图,所以我选择world的geojson就可以了:
接下来是处理数据
加上类别和列数
加下来就可以写代码了
导入文件
画图把参数改成自己的,要注意其中的几个参数:
geojson要放自己的json文件
color改成自己的val
location也改成自己的
featureidkey要查看一下json文件的格式,选择的参数应该和location一样,不然的话就会出现对不上画不出来的现象,同时也要看一下自己的国家名字和json文件里的是不是一样的。我在处理的时候出现了Russian和Russia,United States和United States of America等不同名称,需要手动修改数据,不然无法识别,就算能画出图,这个国家也匹配不了。
最后出来的效果是这样
果然比pyecharts的丑多了哈哈哈哈哈
参考教程:
https://github.com/secsilm/plotly-choropleth-mapbox-demo