工作中会涉及到以省份为维度去统计一些数据,这就需要画一下地图,百度一下,看到这个文章写得比较简单易懂,故记录一下。

文章链接: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()

pyecharts 绘制中国地图_百度

 

 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()

pyecharts 绘制中国地图_Python_02

 

 下面说一下我使用上面代码时遇到的小阻碍:

1.data是list,里面每个原素不是dict,也是说里面省份和数值之间不是:(冒号),而是,(逗号)

2.不需要带省份这2个字、自治区、市,比如说,广东省要写成广东,广西壮族自治区要写成广西,北京市写成北京,不然地图是没有颜色的

3.max_这个参数要设置好,根据你的数值的最大值去设置,不要一动不动地使用别人设置好的值

4.这段代码最好在jupyter上面跑