工作中会涉及到以省份为维度去统计一些数据,这就需要画一下地图,百度一下,看到这个文章写得比较简单易懂,故记录一下。
文章链接:https://zhuanlan.zhihu.com/p/45202403
我只需要画中国地图,因此只记录下面这两种方法:
1.pyecharts在v1.x之后支持链式调用
from pyecharts.charts import Map,Geo from pyecharts import options as opts data=[("广东",10430.03),("山东",9579.31),("河南",9402.36),("四川",8041.82),("江苏",7865.99),("河北",7185.42),("湖南",6568.37),("安徽",5950.1),("浙江",5442),("湖北",5723.77),("广西",4602.66),("云南",4596.6),("江西",4456.74),("辽宁",4374.63),("黑龙江",3831.22),("陕西",3732.74),("山西",3571.21),("福建",3552),("重庆",2884),("贵州",3476.65),("吉林",2746.22),("甘肃",2557.53),("内蒙古",2470.63),("上海",2301.391),("*",2316.2),("*",2181.33),("北京",1961.2),("天津",1293.82),("海南",867.15),("香港",709.76),("青海",562.67),("宁夏",630.14),("*",300.21),("澳门",55.23)] map=( Map() .add("",data,"china") .set_global_opts( title_opts=opts.TitleOpts(title="各省市人口数",subtitle="数据来源:中国统计年鉴(万人)",pos_right="center",pos_top="5%"), visualmap_opts=opts.VisualMapOpts(max_=12000), ) ) map.render_notebook()
2.不习惯链式调用的话,你也可以单独调用
from pyecharts.charts import Map,Geo from pyecharts import options as opts data=[("广东",10430.03),("山东",9579.31),("河南",9402.36),("四川",8041.82),("江苏",7865.99),("河北",7185.42),("湖南",6568.37),("安徽",5950.1),("浙江",5442),("湖北",5723.77),("广西",4602.66),("云南",4596.6),("江西",4456.74),("辽宁",4374.63),("黑龙江",3831.22),("陕西",3732.74),("山西",3571.21),("福建",3552),("重庆",2884),("贵州",3476.65),("吉林",2746.22),("甘肃",2557.53),("内蒙古",2470.63),("上海",2301.391),("*",2316.2),("*",2181.33),("北京",1961.2),("天津",1293.82),("海南",867.15),("香港",709.76),("青海",562.67),("宁夏",630.14),("*",300.21),("澳门",55.23)] map=Map() map.add("",data,"china") map.set_global_opts( title_opts=opts.TitleOpts(title="各省市人口数",subtitle="数据来源:中国统计年鉴(万人)",pos_right="center",pos_top="5%"), visualmap_opts=opts.VisualMapOpts(max_=12000), ) map.render_notebook()
下面说一下我使用上面代码时遇到的小阻碍:
1.data是list,里面每个原素不是dict,也是说里面省份和数值之间不是:(冒号),而是,(逗号)
2.不需要带省份这2个字和自治区,比如说,广东省要写成广东,广西壮族自治区要写成广西,不然地图是没有颜色的
3.max_这个参数要设置好,根据你的数值的最大值去设置,不要一动不动地使用别人设置好的值