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
- 全球国家地图:echarts-countries-pypkg(1.9MB): 世界地图和 213 个国家,包括中国地图-
- 中国省级地图:echarts-china-provinces-pypkg(730KB):23 个省,5 个自治区
- 中国市级地图:echarts-china-cities-pypkg(3.8MB):370 个中国城市
- 中国县区级地图:echarts-china-counties-pypkg(4.1MB):2882 个中国县区
- 中国区域地图:echarts-china-misc-pypkg(148KB):11 个中国区域地图,比如华南、华北。
具体使用时会发现网上的很多教程都都不错,原因是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()
更多用法还是看官方文档吧。
参考链接: