器→工具, 工具软件

Python地理数据可视化工具pyecharts

钱魏Way · · 10 次浏览

pyecharts简介

Echarts是百度开源的一个数据可视化 JS 库。可以流畅的运行在 PC 和移动设备上,底层依赖轻量级的矢量图形库 ZRender,提供直观,交互丰富,可高度个性化定制的数据可视化图表。ECharts 提供了常规的折线图、柱状图、散点图、饼图、K线图,用于统计的盒形图,用于地理数据可视化的地图、热力图、线图,用于关系数据可视化的关系图、treemap、旭日图,多维数据可视化的平行坐标,还有用于 BI 的漏斗图,仪表盘,并且支持图与图之间的混搭。

pyecharts 是一个用于生成 Echarts 图表的类库。主要特性:

  • 简洁的 API 设计,使用如丝滑般流畅,支持链式调用
  • 囊括了 30+ 种常见图表,应有尽有
  • 支持主流 Notebook 环境,Jupyter Notebook 和 JupyterLab
  • 可轻松集成至 Flask,Sanic,Django 等主流 Web 框架
  • 高度灵活的配置项,可轻松搭配出精美的图表
  • 详细的文档和示例,帮助开发者更快的上手项目
  • 多达 400+ 地图文件,并且支持原生百度地图,为地理数据可视化提供强有力的支持

相比matplotlib的优点:

  • 类型多,依托echart库。
  • 可交互,依托echart库。
  • 容易嵌入web页面。支持前后端分离模式和不分离模式。

Pyecharts支持的图形:

  • Bar(柱状图/条形图)
  • Bar3D(3D 柱状图)
  • EffectScatter(带有涟漪特效动画的散点图)
  • Funnel(漏斗图)
  • Gauge(仪表盘)
  • Geo(地理坐标系)
  • Graph(关系图)
  • HeatMap(热力图)
  • Kline(K线图)
  • Line(折线/面积图)
  • Line3D(3D 折线图)
  • Liquid(水球图)
  • Map(地图)
  • Parallel(平行坐标系)
  • Pie(饼图)
  • Polar(极坐标系)
  • Radar(雷达图)
  • Scatter(散点图)
  • Scatter3D(3D 散点图)
  • WordCloud(词云图)

使用pyecharts进行地图可视化

pyecharts v0.3.2以后,pyecharts不再自带地图 js 文件。在使用前,除了安装pip install pyecharts外,需要安装:

pip install echarts-countries-pypkg
pip install echarts-china-provinces-pypkg
pip install echarts-china-cities-pypkg
pip install echarts-china-counties-pypkg
pip install echarts-china-misc-pypkg

具体使用时会发现网上的很多教程都都不错,原因是pyecharts分为v0.5.X和v1两个版本,两个版本彼此不兼容。v1 版本写法,支持链式调用,但导包方式发生了变化。示例代码:

from pyecharts.charts import Map,Geo
from pyecharts import options as opts

locate = ['北京','天津','河北','山西','内蒙古','辽宁','吉林','黑龙江','上海','江苏','浙江','安徽','福建','江西','山东','河南','湖北','湖南','广东','广西','海南','重庆','四川','贵州','云南','陕西','甘肃','青海','宁夏','新疆','西藏']
app_price = [10.84,8.65,18.06,8.90,5.04,29.20,8.98,17.80,27.81,24.24,12.72,11.10,6.30,7.00,22.45,16.92,11.00,14.99,18.85,5.85,1.40,7.32,14.61,4.62,6.05,8.07,6.73,15.54,13.00,39.07,25.61,21.3]
price_list = [[locate[i],app_price[i]] for i in range(len(locate))]
map_1 = Map()
map_1.set_global_opts(
    title_opts=opts.TitleOpts(title="2019年全国各省苹果价格表"),
    visualmap_opts=opts.VisualMapOpts(max_=50)  #最大数据范围
    )
map_1.add("2019年全国各省苹果价格", price_list, maptype="china")
map_1.render("apple.html")

JupyterLab渲染问题

1、在引入 pyecharts.charts 等模块前声明Notebook 类型

from pyecharts.globals import CurrentConfig, NotebookType
CurrentConfig.NOTEBOOK_TYPE = NotebookType.JUPYTER_LAB
from pyecharts.charts import Map,Geo
from pyecharts import options as opts

#将数据处理成列表
locate = ['北京','天津','河北','山西','内蒙古','辽宁','吉林','黑龙江','上海','江苏','浙江','安徽','福建','江西','山东','河南','湖北','湖南','广东','广西','海南','重庆','四川','贵州','云南','陕西','甘肃','青海','宁夏','新疆','西藏']
app_price = [10.84,8.65,18.06,8.90,5.04,29.20,8.98,17.80,27.81,24.24,12.72,11.10,6.30,7.00,22.45,16.92,11.00,14.99,18.85,5.85,1.40,7.32,14.61,4.62,6.05,8.07,6.73,15.54,13.00,39.07,25.61,21.3]
price_list = [[locate[i],app_price[i]] for i in range(len(locate))]
map_1 = Map()
map_1.set_global_opts(
    title_opts=opts.TitleOpts(title="2019年全国各省苹果价格表"),
    visualmap_opts=opts.VisualMapOpts(max_=50)  #最大数据范围
    )
map_1.add("2019年全国各省苹果价格", price_list, maptype="china")
# map_1.render("apple.html")

2、调用 load_javascript() 会预先加载基本 JavaScript 文件到 Notebook 中

map_1.load_javascript()

3、调用render_notebook()进行输出。备注:load_javascript() 和 render_notebook() 方法需要在不同的 cell 中调用

map_1.render_notebook()

更多用法还是看官方文档吧。

参考链接:

发表评论

电子邮件地址不会被公开。 必填项已用*标注