pyecharts 地圖繪製

地圖繪製

  1. 熱力圖

    from pyecharts import options as opts
    from pyecharts.charts import Geo
    from pyecharts.globals import GeoType, ThemeType
    from pyecharts.faker import Faker
    import random
    
    map = (
        Geo(init_opts=opts.InitOpts(width="1000px", height="800px", renderer="canvas",
                                    theme=ThemeType.LIGHT, animation_opts=opts.AnimationOpts(animation=True)))
            .add_schema(maptype="china")
            .add(series_name="中國熱力圖",
                 data_pair=[list(z) for z in
                            zip(Faker.provinces,
                                [random.randint(0, (i + 1) * 200 + 100) for i in range(len(Faker.provinces))])],
                 type_=GeoType.EFFECT_SCATTER, symbol_size=20,
                 color=Faker.visual_color[random.randint(0, len(Faker.visual_color)-1)])
            .add(series_name="廣東熱力圖",
                 data_pair=[list(z) for z in
                            zip(Faker.guangdong_city,
                                [random.randint(0, (i + 1) * 100) for i in range(len(Faker.provinces))])],
                 type_=GeoType.EFFECT_SCATTER, symbol_size=10,
                 color=Faker.visual_color[1])
            .set_series_opts(label_opts=opts.LabelOpts(is_show=False))
            .set_global_opts(visualmap_opts=opts.VisualMapOpts(max_=400, pos_top=20),
                             title_opts=opts.TitleOpts(title=""),
                             )
    )
    map.render(path="./render/geo_heatmap.html")
    
    

    熱力圖

  2. 行程圖

    import random
    
    from pyecharts import options as opts
    from pyecharts.charts import Geo
    from pyecharts.globals import GeoType, SymbolType
    from pyecharts.faker import Faker
    
    Faker.provinces = ["北京", "上海", "江蘇", "浙江", "江西", "廣東", "湖南", "和布克賽爾蒙古自治縣"]
    map = (
        Geo()
            .add_schema(maptype="china",
                        itemstyle_opts=opts.ItemStyleOpts(color="#9cf", border_color="#111"))
            .add(series_name="順序",
                 data_pair=[list(z) for z in
                            zip(Faker.provinces,
                                [i + 1 for i in range(len(Faker.provinces))])],
                 type_=GeoType.EFFECT_SCATTER,
                 color=Faker.visual_color[0],
                 )
            .add(series_name="行程",
                 data_pair=[(Faker.provinces[i], Faker.provinces[(i + 1) % len(Faker.provinces)]) for i in
                            range(len(Faker.provinces))],
                 type_=GeoType.LINES,
                 effect_opts=opts.EffectOpts(
                     symbol=SymbolType.ARROW, symbol_size=5, color=Faker.visual_color[2],
                 ),
                 # curve>0,曲線凸;curve<0,曲線凹
                 linestyle_opts=opts.LineStyleOpts(curve=0.1),
                 # color=Faker.visual_color[2],
                 )
            .set_series_opts(label_opts=opts.LabelOpts(is_show=False))
            .set_global_opts(title_opts=opts.TitleOpts(title="行程圖"))
    )
    map.render(path="render/geo_lines.html")
    
    

    行程圖

  3. 分佈圖

    from pyecharts import options as opts
    from pyecharts.charts import Geo
    from pyecharts.globals import ThemeType
    from pyecharts.faker import Faker
    import numpy as np
    
    length = 100
    lons = np.random.ranf(length) * (117.30043 - 115.71633) + 115.71633
    lats = np.random.ranf(length) * (40.65389 - 39.47002) + 39.47002
    
    map = Geo(init_opts=opts.InitOpts(width="1000px", height="800px", renderer="svg",
                                      theme=ThemeType.LIGHT, animation_opts=opts.AnimationOpts(animation=True))) \
        .add_schema(maptype="北京", layout_size=100)
    
    # 添加自定義點和屬性
    [map.add_coordinate("點%d" % i, lons[i], lats[i])
         .add(series_name=(lambda x: "類別-0" if x % 2 == 0 else "類別-1")(i),
              data_pair=[("點%d" % i, i * 100)],
              color=(lambda x: Faker.visual_color[0] if x % 2 == 0 else Faker.visual_color[2])(i),
              ) for i in range(length)]
    
    map.set_series_opts(label_opts=opts.LabelOpts(is_show=False)) \
        .set_global_opts(title_opts=opts.TitleOpts(title="自定義點"))
    # 在 html 渲染圖表
    map.render('./render/geo_points.html')
    # 在 Jupyter Notebook 中渲染圖表
    # map.render_notebook()
    
    

    分佈圖

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章