使用pyecharts绘制地图

使用pyecharts绘制交互式动态地图

安装pyecharts
!pip install pyecharts==1.0
实验环境
python 3.6
pyecharts 1.0
jupyter notebook

利用Geo绘制地理坐标图表

导入模块
from example.commons import Faker 
from pyecharts import options as opts 
from pyecharts.charts import Geo 
from pyecharts.globals import ChartType, SymbolType

1. 基本图表

基本示例
geo = Geo()
geo.add_schema(maptype="china")
geo.add("geo", [list(z) for z in zip(Faker.provinces, Faker.values())])
geo.set_series_opts(label_opts=opts.LabelOpts(is_show=False))
geo.set_global_opts(visualmap_opts=opts.VisualMapOpts(),title_opts=opts.TitleOpts(title="Geo-基本示例"))

geo.render_notebook() #显示地图
geo.render() #输出html格式

在这里插入图片描述

Geo()模块功能函数:
add_schema() :控制地图类型、视角中心点等
add():添加图表名称、传入数据集、选择geo图类型、调整图例等
set_series_opts() :系列配置项,可配置图元样式、文字样式、标签样式、点线样式等
set_global_opts() : 全局配置项,可配置标题、动画、坐标轴、图例等
render_notebook() : 在notebook中渲染显示图表
add_coordinate() : 新增一个坐标点
add_coordinate_json() :以json形式新增多个坐标点
get_coordinate() :根据地点查询对应坐标

Geo

全国各省xx数据分布
c = (
    Geo()
    .add_schema(maptype="china")
    .add("geo", [list(z) for z in zip(['江苏','浙江','湖北','湖南','河南'], [22,34,27,53,42])])
    .set_series_opts(label_opts=opts.LabelOpts(is_show=False))
    .set_global_opts(
        visualmap_opts=opts.VisualMapOpts(),
        title_opts=opts.TitleOpts(title="全国各省xx数据分布"),
    )
)

c.render_notebook()

在这里插入图片描述

Geo-HeatMap && 北京作为底图
c = (
        Geo()
        .add_schema(maptype="北京") #北京作为底图
        .add(
            "geo",
            [list(z) for z in zip(['大兴区','房山区','海淀区','朝阳区','东城区'], [150,100,300,200,500])],
            type_=ChartType.EFFECT_SCATTER, #热力图
        )
        .set_series_opts(label_opts=opts.LabelOpts(is_show=False))
        .set_global_opts(
            visualmap_opts=opts.VisualMapOpts(),
            title_opts=opts.TitleOpts(title="Geo-HeatMap"),
        )
    )

c.render_notebook()

在这里插入图片描述

修改地图的背景色
c = (
        Geo()
        .add_schema(maptype="北京",
                   itemstyle_opts=opts.ItemStyleOpts(color="#323c48", border_color="#111")) #修改地图的背景色
        .add(
            "geo",
            [list(z) for z in zip(['大兴区','房山区','海淀区','朝阳区','东城区'], [1500,10,300,20,5])],
        )
        .set_series_opts(label_opts=opts.LabelOpts(is_show=False))
        .set_global_opts(
            visualmap_opts=opts.VisualMapOpts(),
            title_opts=opts.TitleOpts(title="北京市各区县xx数据分布"),
        )
    )

c.render_notebook()

在这里插入图片描述

2. 动态展示

pyecharts可以生成地理空间流动图,用来表示航班数量、人口流动等等

全国主要城市航班路线和数量
c = (
        Geo()
        .add_schema(maptype="china")
        .add(
            "",
            [("深圳", 120), ("哈尔滨", 66), ("杭州", 77), ("重庆", 88), ("上海", 100), ("乌鲁木齐", 30),("北京", 30),("武汉",70)],
            type_=ChartType.EFFECT_SCATTER,
            color="green",
        )
        .add(
            "geo",
            [("北京", "上海"), ("武汉", "深圳"),("重庆", "杭州"),("哈尔滨", "重庆"),("乌鲁木齐", "哈尔滨"),("深圳", "乌鲁木齐"),("武汉", "北京")],
            type_=ChartType.LINES,
            effect_opts=opts.EffectOpts(
                symbol=SymbolType.ARROW, symbol_size=6, color="blue"
            ),
            linestyle_opts=opts.LineStyleOpts(curve=0.2),
        )
        .set_series_opts(label_opts=opts.LabelOpts(is_show=False))
        .set_global_opts(title_opts=opts.TitleOpts(title="全国主要城市航班路线和数量"))
    )

c.render_notebook()

在这里插入图片描述

利用Map模块绘制地图

导入相关类库
from example.commons import Faker # 案例数据
from pyecharts import options as opts #负责图表配置的模块
from pyecharts.charts import Map #地图主要用于地理区域数据的可视化
西安
c = (
        Map()
        .add("商家A", [list(z) for z in zip(['雁塔区','阎良区','长安区','蓝田县','周至县'], [22,100,27,53,42])], "西安")
        .set_series_opts(label_opts=opts.LabelOpts(is_show=False))
        .set_global_opts(
            title_opts=opts.TitleOpts(title="Map-西安"),
            visualmap_opts=opts.VisualMapOpts(max_=100),
        )
    )

c.render_notebook()  

在这里插入图片描述

陕西
c = (
        Map()
        .add("商家A", [list(z) for z in zip(['西安市','延安市','咸阳市'], [22,100,27])], "陕西")
        .set_series_opts(label_opts=opts.LabelOpts(is_show=False))
        .set_global_opts(
            title_opts=opts.TitleOpts(title="Map-陕西"),
            visualmap_opts=opts.VisualMapOpts(max_=200),
        )
    )

c.render_notebook()

在这里插入图片描述

中国地图
c = (
    Map()
    .add("商家A", [list(z) for z in zip(['江苏','浙江','湖北','湖南','河南'], [22,100,27,53,42])], "china")
    .set_global_opts(title_opts=opts.TitleOpts(title="Map-中国地图"),
    visualmap_opts=opts.VisualMapOpts(max_=200))
)

c.render_notebook()

在这里插入图片描述

世界地图
c = (
        Map()
        .add("商家A", [list(z) for z in zip(['China','Canada','Brazil','United States','Russia'], [22,100,27,53,42])], "world")
        .set_series_opts(label_opts=opts.LabelOpts(is_show=False))
        .set_global_opts(
            title_opts=opts.TitleOpts(title="Map-世界地图"),
            visualmap_opts=opts.VisualMapOpts(max_=200),
        )
    )

c.render_notebook()

在这里插入图片描述

发布了50 篇原创文章 · 获赞 51 · 访问量 2481

猜你喜欢

转载自blog.csdn.net/hezuijiudexiaobai/article/details/104317879
今日推荐