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函数式编程指南(四):生成器详解
Jun 24 Python
Python实现批量更换指定目录下文件扩展名的方法
Sep 19 Python
Python单向链表和双向链表原理与用法实例详解
Aug 31 Python
使用python对excle和json互相转换的示例
Oct 23 Python
Python图像处理之图像的读取、显示与保存操作【测试可用】
Jan 04 Python
对python判断ip是否可达的实例详解
Jan 31 Python
Django框架之登录后自定义跳转页面的实现方法
Jul 18 Python
把django中admin后台界面的英文修改为中文显示的方法
Jul 26 Python
python生成13位或16位时间戳以及反向解析时间戳的实例
Mar 03 Python
Python用类实现扑克牌发牌的示例代码
Jun 01 Python
详解查看Python解释器路径的两种方式
Oct 15 Python
关于Python中进度条的六个实用技巧分享
Apr 05 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
ie6 动态缩略图不显示的原因
2009/06/21 PHP
php判断一个数组是否为有序的方法
2015/03/27 PHP
Laravel实现自定义错误输出内容的方法
2016/10/10 PHP
php根据年月获取当月天数及日期数组的方法
2016/11/30 PHP
PHP实现微信支付(jsapi支付)流程步骤详解
2018/03/15 PHP
LBS blog sql注射漏洞[All version]-官方已有补丁
2007/08/26 Javascript
基于jsTree的无限级树JSON数据的转换代码
2010/07/27 Javascript
使用隐藏的new来创建对象
2011/03/29 Javascript
JavaScript中为元素加上name属性的方法
2011/05/09 Javascript
jquery获取被勾选的checked(选中)的那一行的3列和4列的值
2013/07/04 Javascript
js格式化金额可选是否带千分位以及保留精度
2014/01/28 Javascript
Jquery实现侧边栏跟随滚动条固定(兼容IE6)
2014/04/02 Javascript
javascript版的in_array函数(判断数组中是否存在特定值)
2014/05/09 Javascript
Javascript 普通函数和构造函数的区别
2016/11/05 Javascript
JavaScript实现元素滚动条到达一定位置循环追加内容
2017/12/28 Javascript
微信小程序自定义导航教程(兼容各种手机)
2018/12/12 Javascript
layer弹出层自适应高度,垂直水平居中的实现
2019/09/16 Javascript
js实现简单放大镜效果
2020/03/07 Javascript
[01:12]DOTA2次级职业联赛 - Newbee.Y 战队宣传片
2014/12/01 DOTA
[53:38]OG vs LGD 2018国际邀请赛淘汰赛BO3 第三场 8.26
2018/08/30 DOTA
闭包在python中的应用之translate和maketrans用法详解
2014/08/27 Python
python 去除txt文本中的空格、数字、特定字母等方法
2018/07/24 Python
对Python正则匹配IP、Url、Mail的方法详解
2018/12/25 Python
Python3 关于pycharm自动导入包快捷设置的方法
2019/01/16 Python
Python操作配置文件ini的三种方法讲解
2019/02/22 Python
Python将视频或者动态图gif逐帧保存为图片的方法
2019/09/10 Python
python实现简单的五子棋游戏
2020/09/01 Python
Lentiamo比利时:便宜的隐形眼镜
2020/02/14 全球购物
销售类个人求职信范文
2013/09/25 职场文书
幼儿园教师培训制度
2014/01/16 职场文书
文字自荐书范文
2014/02/10 职场文书
旅游局领导班子“四风”问题对照检查材料思想汇报
2014/09/29 职场文书
Python开发之QT解决无边框界面拖动卡屏问题(附带源码)
2021/05/27 Python
Vue-Element-Admin集成自己的接口实现登录跳转
2021/06/23 Vue.js
浅谈redis的过期时间设置和过期删除机制
2022/03/18 MySQL
win10更新失败无限重启解决方法
2022/04/19 数码科技