Python使用pyecharts控件绘制图表


Posted in Python onJune 05, 2022

一、Echarts简介

Echarts 是一个由百度开源的数据可视化,凭借着良好的交互性,精巧的图表设计,得到了众多开发者的认可。而 Python 是一门富有表达力的语言,很适合用于数据处理。当数据分析遇上数据可视化时,pyecharts 诞生了。

分v0.5.x 和 V1 间不兼容,导致很多代码不可复用,旧版本将不再维护。

1、特性

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

2、相关资源:

二、使用

现在我们来开始正式使用pycharts,这里我们直接使用官方的数据:

1、柱状图-Bar

//导入柱状图-Bar
from pyecharts import Bar
//设置行名
columns = ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"]
//设置数据
data1 = [2.0, 4.9, 7.0, 23.2, 25.6, 76.7, 135.6, 162.2, 32.6, 20.0, 6.4, 3.3]
data2 = [2.6, 5.9, 9.0, 26.4, 28.7, 70.7, 175.6, 182.2, 48.7, 18.8, 6.0, 2.3]
//设置柱状图的主标题与副标题
bar = Bar("柱状图", "一年的降水量与蒸发量")
//添加柱状图的数据及配置项
bar.add("降水量", columns, data1, mark_line=["average"], mark_point=["max", "min"])
bar.add("蒸发量", columns, data2, mark_line=["average"], mark_point=["max", "min"])
//生成本地文件(默认为.html文件)
bar.render()

简单的几行代码就可以将数据进行非常好看的可视化,而且还是动态的,在这里还是要安利一下jupyter,pyecharts在v0.1.9.2版本开始,在jupyter上直接调用实例(例如上方直接调用bar)就可以将图表直接表示出来,非常方便。

笔者数了数,目前pyecharts上的图表大概支持到二十多种,接下来,我们再用上方的数据来生成几个数据挖掘常用的图表示例:

2、饼图-Pie

//导入饼图Pie
from pyecharts import Pie
//设置主标题与副标题,标题设置居中,设置宽度为900
pie = Pie("饼状图", "一年的降水量与蒸发量",title_pos='center',width=900)
//加入数据,设置坐标位置为【25,50】,上方的colums选项取消显示
pie.add("降水量", columns, data1 ,center=[25,50],is_legend_show=False)
//加入数据,设置坐标位置为【75,50】,上方的colums选项取消显示,显示label标签
pie.add("蒸发量", columns, data2 ,center=[75,50],is_legend_show=False,is_label_show=True)
//保存图表
pie.render()

3、箱体图-Boxplot

//导入箱型图Boxplot
from pyecharts import Boxplot 
boxplot = Boxplot("箱形图", "一年的降水量与蒸发量")
x_axis = ['降水量','蒸发量']
y_axis = [data1,data2]
//prepare_data方法可以将数据转为嵌套的 [min, Q1, median (or Q2), Q3, max]
yaxis = boxplot.prepare_data(y_axis) 
boxplot.add("天气统计", x_axis, _yaxis)
boxplot.render()

4、折线图-Line

from pyecharts import Line
line = Line("折线图","一年的降水量与蒸发量")
//is_label_show是设置上方数据是否显示
line.add("降水量", columns, data1, is_label_show=True)
line.add("蒸发量", columns, data2, is_label_show=True)
line.render()

5、雷达图-Rader

from pyecharts import Radar
radar = Radar("雷达图", "一年的降水量与蒸发量")
//由于雷达图传入的数据得为多维数据,所以这里需要做一下处理
radar_data1 = [[2.0, 4.9, 7.0, 23.2, 25.6, 76.7, 135.6, 162.2, 32.6, 20.0, 6.4, 3.3]]
radar_data2 = [[2.6, 5.9, 9.0, 26.4, 28.7, 70.7, 175.6, 182.2, 48.7, 18.8, 6.0, 2.3]]
//设置column的最大值,为了雷达图更为直观,这里的月份最大值设置有所不同
schema = [
("Jan", 5), ("Feb",10), ("Mar", 10),
("Apr", 50), ("May", 50), ("Jun", 200),
("Jul", 200), ("Aug", 200), ("Sep", 50),
("Oct", 50), ("Nov", 10), ("Dec", 5)
]
//传入坐标
radar.config(schema)
radar.add("降水量",radar_data1)
//一般默认为同一种颜色,这里为了便于区分,需要设置item的颜色
radar.add("蒸发量",radar_data2,item_color="#1C86EE")
radar.render()

Python使用pyecharts控件绘制图表

6、散点图-scatter

from pyecharts import Scatter
scatter = Scatter("散点图", "一年的降水量与蒸发量")
//xais_name是设置横坐标名称,这里由于显示问题,还需要将y轴名称与y轴的距离进行设置
scatter.add("降水量与蒸发量的散点分布", data1,data2,xaxis_name="降水量",yaxis_name="蒸发量",
 yaxis_name_gap=40)
scatter.render()

7、图表布局 Grid

由于标题与图表是属于两个不同的控件,所以这里必须对下方的图表Line进行标题位置设置,否则会出现标题重叠的bug。

from pyecharts import Grid
//设置折线图标题位置
line = Line("折线图","一年的降水量与蒸发量",title_top="45%")
line.add("降水量", columns, data1, is_label_show=True)
line.add("蒸发量", columns, data2, is_label_show=True)
grid = Grid()
//设置两个图表的相对位置
grid.add(bar, grid_bottom="60%")
grid.add(line, grid_top="60%")
grid.render()
from pyecharts import Overlap
overlap = Overlap()
bar = Bar("柱状图-折线图合并", "一年的降水量与蒸发量")
bar.add("降水量", columns, data1, mark_point=["max", "min"])
bar.add("蒸发量", columns, data2, mark_point=["max", "min"])
overlap.add(bar)
overlap.add(line)
overlap.render()

总结

  • 导入相关图表包
  • 进行图表的基础设置,创建图表对象
  • 利用add()方法进行数据输入与图表设置(可以使用print_echarts_options()来输出所有可配置项)
  • 利用render()方法来进行图表保存

pyecharts还有许多好玩的3D图表和地图图表,个人觉得地图图表是最好玩的,各位有兴趣可以去pyecharts的使用手册查看,有中文版的非常方便。

到此这篇关于Python使用pyecharts控件绘制图表的文章就介绍到这了。希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。


Tags in this post...

Python 相关文章推荐
python服务器与android客户端socket通信实例
Nov 12 Python
PHP魔术方法__ISSET、__UNSET使用实例
Nov 25 Python
Python 常用string函数详解
May 30 Python
Python设计模式之简单工厂模式实例详解
Jan 22 Python
详解如何从TensorFlow的mnist数据集导出手写体数字图片
Aug 05 Python
python提取照片坐标信息的实例代码
Aug 14 Python
Python3操作读写CSV文件使用包过程解析
Apr 10 Python
如何使用python的ctypes调用医保中心的dll动态库下载医保中心的账单
May 24 Python
使用Keras 实现查看model weights .h5 文件的内容
Jun 09 Python
基于keras中的回调函数用法说明
Jun 17 Python
Django数据库迁移常见使用方法
Nov 12 Python
Python机器学习实战之k-近邻算法的实现
Nov 27 Python
Python使用openpyxl模块处理Excel文件
Jun 05 #Python
Python中requests库的用法详解
Jun 05 #Python
Python加密与解密模块hashlib与hmac
Jun 05 #Python
Python日志模块logging用法
Jun 05 #Python
Python使用Beautiful Soup(BS4)库解析HTML和XML
Jun 05 #Python
Python四款GUI图形界面库介绍
Python序列化模块JSON与Pickle
Jun 05 #Python
You might like
Win2000+Apache+MySql+PHP4+PERL安装使用小结
2006/10/09 PHP
建立文件交换功能的脚本(二)
2006/10/09 PHP
php入门学习知识点六 PHP文件的读写操作代码
2011/07/14 PHP
ThinkPHP中数据操作案例分析
2015/09/27 PHP
PHP 闭包详解及实例代码
2016/09/28 PHP
使用jQuery Ajax功能时需要注意的一个问题(内存溢出)
2012/05/30 Javascript
jQuery获取节点和子节点文本的方法
2014/07/22 Javascript
jQuery源码分析之jQuery.fn.each与jQuery.each用法
2015/01/23 Javascript
JS获取Table中td值的方法
2015/03/19 Javascript
jQuery实现的数值范围range2dslider选取插件特效多款代码分享
2015/08/27 Javascript
ECharts仪表盘实例代码(附源码下载)
2016/02/18 Javascript
完美解决IE不支持Data.parse()的问题
2016/11/24 Javascript
原生js实现电商侧边导航效果
2017/01/19 Javascript
javascript设计模式之中介者模式学习笔记
2017/02/15 Javascript
详解前端路由实现与react-router使用姿势
2017/08/07 Javascript
JS中Swiper的使用和轮播图效果
2017/08/11 Javascript
基于vue的短信验证码倒计时demo
2017/09/13 Javascript
vue 设置路由的登录权限的方法
2018/07/03 Javascript
详解微信小程序缓存--缓存时效性
2019/05/02 Javascript
JQuery事件委托原理与用法实例分析
2019/05/13 jQuery
Vue中Table组件行内右键菜单实现方法(基于 vue + AntDesign)
2019/11/21 Javascript
uni-app微信小程序登录授权的实现
2020/05/22 Javascript
详解JS函数防抖
2020/06/05 Javascript
解决qrcode.js生成二维码时必须定义一个空div的问题
2020/07/09 Javascript
[02:00]DOTA2英雄COSPLAY闹市街头巡游助威2015国际邀请赛
2015/08/02 DOTA
Python多进程通信Queue、Pipe、Value、Array实例
2014/11/21 Python
总结Python编程中函数的使用要点
2016/03/20 Python
动感网页相册 python编写简单文件夹内图片浏览工具
2016/08/17 Python
Python 转换RGB颜色值的示例代码
2019/10/13 Python
Numpy 理解ndarray对象的示例代码
2020/04/03 Python
建筑行业的大学生自我评价
2013/12/08 职场文书
会计专业大学生职业生涯规划范文
2014/01/11 职场文书
金融管理毕业生求职信
2014/03/03 职场文书
反腐倡廉标语
2014/06/24 职场文书
竞选班长演讲稿500字
2014/08/22 职场文书
软环境建设心得体会
2014/09/09 职场文书