pyecharts 在地图上根据经纬度和量值,画出散点图/热力图

实现的功能: 将经纬度映射到地图上,查看每个经纬度附近的商家数量的分布情况。

作图类型:地图+散点图,地图+热力图

应用的类型: Geo

py版本: python2+, pyhton3+

pyecharts 文档:https://pyecharts.org/#/zh-cn/intro

ECharts是一个纯Javascript的图表库,可以流畅的运行在PC和移动设备上,兼容当前绝大部分浏览器,底层依赖轻量级的Canvas类库ZRender,提供直观、生动、可交互、可高度个性化定制的数据可视化图表。ECharts提供了常规的折线图、柱状图、散点图、饼图、K线图,用于统计的盒形图,用于地理数据可视化的地图、热力图、线图,用于关系数据可视化的关系图、treemap,多维数据可视化的平行坐标,还有用于BI的漏斗图、仪表盘,并且支持图与图之间的混搭。

要想使用地图库,需要安装第三方包(pip/pip3)

pip install echarts-countries-pypkg  # 全球国家地图
pip install echarts-cities-pypkg    # 全球城市地图
pip install echarts-china-provinces-pypkg  # 中国省级地图
pip install echarts-china-cities-pypkg  # 中国市级地图
pip install echarts-china-misc-pypkg
pip install echarts-united-kingdom-pypkg

绘制地图

from pyecharts.charts import Geo
from pyecharts import options as opts
from pyecharts.globals import GeoType


def test_geo():
    city = '长沙'
    g = Geo()
    g.add_schema(maptype=city)

    # 定义坐标对应的名称,添加到坐标库中 add_coordinate(name, lng, lat)
    g.add_coordinate('湖南省长沙市宁乡市横市镇藕塘', 112.21369756169062, 28.211359706637378)
    g.add_coordinate('湖南省长沙市雨花区跳马镇仙峰岭', 113.16921879037058, 28.039877432448428)
    g.add_coordinate('湖南省长沙市长沙县黄花镇新塘铺长沙黄花国际机场', 113.23212337884058, 28.19327497825815)

    # 定义数据对,
    data_pair = [('湖南省长沙市雨花区跳马镇仙峰岭', 10), ('湖南省长沙市宁乡市横市镇藕塘', 5), ('湖南省长沙市长沙县黄花镇新塘铺长沙黄花国际机场', 20)]

    # Geo 图类型,有 scatter, effectScatter, heatmap, lines 4 种,建议使用
    # from pyecharts.globals import GeoType
    # GeoType.GeoType.EFFECT_SCATTER,GeoType.HEATMAP,GeoType.LINES

    # 将数据添加到地图上
    g.add('', data_pair, type_=GeoType.EFFECT_SCATTER, symbol_size=5)
    # 设置样式
    g.set_series_opts(label_opts=opts.LabelOpts(is_show=False))
    # 自定义分段 color 可以用取色器取色
    pieces = [
        {'max': 1, 'label': '0以下', 'color': '#50A3BA'},
        {'min': 1, 'max': 10, 'label': '1-10', 'color': '#3700A4'},
        {'min': 10, 'max': 20, 'label': '10-20', 'color': '#81AE9F'},
        {'min': 20, 'max': 30, 'label': '20-30', 'color': '#E2C568'},
        {'min': 30, 'max': 50, 'label': '30-50', 'color': '#FCF84D'},
        {'min': 50, 'max': 100, 'label': '50-100', 'color': '#DD0200'},
        {'min': 100, 'max': 200, 'label': '100-200', 'color': '#DD675E'},
        {'min': 200, 'label': '200以上', 'color': '#D94E5D'}  # 有下限无上限
    ]
    #  is_piecewise 是否自定义分段, 变为true 才能生效
    g.set_global_opts(
        visualmap_opts=opts.VisualMapOpts(is_piecewise=True, pieces=pieces),
        title_opts=opts.TitleOpts(title="{}-店铺分布".format(city)),
    )
    return g

g = test_geo()
# 渲染成html, 可用浏览器直接打开
g.render('test_render.html')

效果图(test数据量小):
pyecharts 在地图上根据经纬度和量值,画出散点图/热力图_第1张图片
在真实需求的应用中,看到的结果是:
pyecharts 在地图上根据经纬度和量值,画出散点图/热力图_第2张图片

你可能感兴趣的:(python)