pyecharts在数据可视化中的应用详解


Posted in Python onJune 08, 2020

使用pyecharts进行数据可视化

安装 pip install pyecharts
也可以在pycharm软件里进行下载pyecharts库包。
下载成功后进行查询版本号

import pyecharts
print(pyecharts.__version__)

pyecharts的中文官网

可以查看pyecharts的中文官网介绍http://pyecharts.org/#/zh-cn/intro。

一般的使用方法

add()
该方法主要用于添加图表的数据和设置各种配置项。

show_config()
用于打印输出图表的所有配置项

render()
该方法默认将会在根目录下生成一个 render.html 的文件,支持 path 参数,设置文件保存位置,如 render(r"e:my_first_chart.html"),文件用浏览器打开。

注意*
默认的编码类型为 UTF-8,在 Python3 中是没什么问题的,Python3 对中文的支持好很多。但是在 Python2 中,编码的处理是个很头疼的问题,暂时没能找到完美的解决方法,目前只能通过文本编辑器自己进行二次编码,我用的是 Visual Studio Code,先通过 Gbk 编码重新打开,然后再用 UTF-8 重新保存,这样用浏览器打开的话就不会出现中文乱码问题了。

基本使用

  • chart_name = Type() 初始化具体类型图表。
  • add() 添加数据及配置项。
  • render() 生成 .html 文件。

用示例来解决实际问题

1.美国1995年-2009年邮费变化折线图、阶梯图;

数据如下:
年份 : [“1995”, “1996”, “1997”, “1998”, “1999”, “2000”,
“2001”, “2002”, “2003”, “2004”, “2005”, “2006”,
“2007”, “2008”, “2009”]
邮费: [0.32, 0.32, 0.32, 0.32, 0.33, 0.33, 0.34, 0.37, 0.37, 0.37, 0.37, 0.39, 0.41, 0.42, 0.44]
折线图 代码如下:

import pyecharts.options as opts
from pyecharts.charts import Line

year= ["1995", "1996", "1997", "1998", "1999", "2000",
   "2001", "2002", "2003", "2004", "2005", "2006",
   "2007", "2008", "2009"]
postage= [0.32, 0.32, 0.32, 0.32, 0.33, 0.33, 0.34, 0.37, 0.37, 0.37, 0.37, 0.39, 0.41, 0.42, 0.44]

(
 Line()
 .set_global_opts(
  tooltip_opts=opts.TooltipOpts(is_show=False),
  xaxis_opts=opts.AxisOpts(type_="category"),
  yaxis_opts=opts.AxisOpts(
   type_="value",
   axistick_opts=opts.AxisTickOpts(is_show=True),
   splitline_opts=opts.SplitLineOpts(is_show=True),
  ),
 )
 .add_xaxis(xaxis_data=year)
 .add_yaxis(
  series_name="",
  y_axis=postage,
  symbol="emptyCircle",
  is_symbol_show=True,
  label_opts=opts.LabelOpts(is_show=False),
 )
 .render("basic_line_chart.html")
)

会在同目录下生成一个basic_line_chart.html的网页,打开网页则会显示该代码的运行结果。(此不展示,与下同)

阶梯图 代码如下:

import pyecharts.options as opts
from pyecharts.charts import Line

year = ["1995", "1996", "1997", "1998", "1999", "2000",
   "2001", "2002", "2003", "2004", "2005", "2006",
   "2007", "2008", "2009"]
postage = [0.32, 0.32, 0.32, 0.32, 0.33, 0.33, 0.34, 0.37, 0.37, 0.37, 0.37, 0.39, 0.41, 0.42, 0.44]

c = (
 Line()
 .add_xaxis(xaxis_data=year)
 .add_yaxis("美国1995年-2009年邮费", y_axis=postage, is_step=True)
 .set_global_opts(title_opts=opts.TitleOpts(title="Line-阶梯图"))
 .render("line_step.html")
)

会在同目录下生成一个line_step.html的网页,打开网页则会显示该代码的运行结果:

pyecharts在数据可视化中的应用详解

2.2000年-2010年热狗大胃王比赛前三名成绩的堆叠柱形图、极坐标系-堆叠柱状图(南丁格尔玫瑰图);
数据文件:hot-dog-places.csv
hot-dog-places.csv内写着:

2000,2001,2002,2003,2004,2005,2006,2007,2008,2009,2010
25,50,50.5,44.5,53.5,49,54,66,59,68,54
24,31,26,30.5,38,37,52,63,59,64.5,43
22,23.5,25.5,29.5,32,32,37,49,42,55,37

等数据将其保存为csv文件
堆叠柱形图 代码如下:

from pyecharts import options as opts
from pyecharts.charts import Bar
import csv

filename="hot-dog-places.csv"
data_x=[]
#打开文件循环读取数据
with open(filename) as f:
 reader = csv.reader(f)
 for data_row in reader:
  data_x.append(data_row)
x=data_x[0]			#读取数据列表集中第一行数据进行赋值
y1=data_x[1]
y2=data_x[2]
y3=data_x[3]

c = (
 Bar()
 .add_xaxis(x)
 .add_yaxis("第一名", y1, stack="stack1")
 .add_yaxis("第二名", y2, stack="stack1")
 .add_yaxis("第三名", y3, stack="stack1")#显示在同一条柱状图中,不带stack属性则会分为三条柱状图
 .set_series_opts(label_opts=opts.LabelOpts(is_show=False))
 .set_global_opts(title_opts=opts.TitleOpts(title="Bar-堆叠柱形图"))
 .render("bar_stack0.html")
)

会在同目录下生成一个bar_stack0.html的网页,打开网页则会显示该代码的运行结果:

pyecharts在数据可视化中的应用详解

极坐标系-堆叠柱状图(南丁格尔玫瑰图) 代码如下:

from pyecharts import options as opts
from pyecharts.charts import Polar
import csv

filename="hot-dog-places.csv"
data_x=[]
#打开文件循环读取数据
with open(filename) as f:
 reader = csv.reader(f)
 for data_row in reader:
  data_x.append(data_row)
x=data_x[0]			#读取数据列表集中第一行数据进行赋值
y1=data_x[1]
y2=data_x[2]
y3=data_x[3]

c = (
 Polar()
 .add_schema(angleaxis_opts=opts.AngleAxisOpts(data=x, type_="category"))
 .add("A", y1, type_="bar", stack="stack0")
 .add("B", y2, type_="bar", stack="stack0")
 .add("C", y3, type_="bar", stack="stack0")
 .set_global_opts(title_opts=opts.TitleOpts(title="极坐标系-堆叠柱状图(南丁格尔玫瑰图)"))
 .render("极坐标系-堆叠柱状图(南丁格尔玫瑰图).html")
)

打开网页则会显示该代码的运行结果:

pyecharts在数据可视化中的应用详解

极坐标系-堆叠柱状图 代码与上面相同,需要改的是c后面接的将其更改为如下代码:

d = (
 Polar()
 .add_schema(
  radiusaxis_opts=opts.RadiusAxisOpts(data=x, type_="category"),
  angleaxis_opts=opts.AngleAxisOpts(is_clockwise=True, max_=200),
 )
 .add("A", y1, type_="bar", stack="stack1")
 .add("B", y2, type_="bar", stack="stack1")
 .add("C", y3, type_="bar", stack="stack1")
 .set_global_opts(title_opts=opts.TitleOpts(title="极坐标系-堆叠柱状图"))
 .set_series_opts(label_opts=opts.LabelOpts(is_show=True))
 .render("极坐标系-堆叠柱状图.html")
)

打开网页则会显示该代码的运行结果:

pyecharts在数据可视化中的应用详解

3.某网站用户感兴趣的领域的投票结果绘制饼图、环形图;
数据文件:vote_result.csv
vote_result.csv内写着:

感兴趣的领域,票数
金融,172
医疗保健,136
市场业,135
零售业,101
制造业,80
司法,68
工程与科学,50
保险业,29
其他,41

饼图 代码如下:

from pyecharts import options as opts
from pyecharts.charts import Pie
import csv

filename="vote_result.csv"
data_x=[]
#打开文件循环读取数据
with open(filename,'r', encoding='UTF-8') as f:
 reader = csv.reader(f)
 for data_row in reader:
  data_x.append(data_row)
b=[]
c=[]
for index,values in enumerate(data_x):
 if(index>0):
  b.append(values[0])
  c.append(values[1])

x=data_x[0]			#读取数据列表集中第一行数据进行赋值

d = (
 Pie()
 .add(
  "",
  [list(z) for z in zip(b, c)],
  center=["35%", "50%"],
 )
 .set_global_opts(
  title_opts=opts.TitleOpts(title="投票结果饼图"),
  legend_opts=opts.LegendOpts(pos_left="15%"),
 )
 .set_series_opts(label_opts=opts.LabelOpts(formatter="{b}: {c}"))
 .render("pie_position.html")
)

打开网页则会显示该代码的运行结果:

pyecharts在数据可视化中的应用详解

环形图 代码如下:

from pyecharts import options as opts
from pyecharts.charts import Pie
import csv

filename="vote_result.csv"
data_x=[]
#打开文件循环读取数据
with open(filename,'r', encoding='UTF-8') as f:
 reader = csv.reader(f)
 for data_row in reader:
  data_x.append(data_row)
b=[]
c=[]
for index,values in enumerate(data_x):
 if(index>0):
  b.append(values[0])
  c.append(values[1])

d = (
 Pie()
 .add(
  "",
  [list(z) for z in zip(b, c)],
  radius=["40%", "75%"],
 )
 .set_global_opts(
  title_opts=opts.TitleOpts(title="环形图"),
  legend_opts=opts.LegendOpts(orient="vertical", pos_top="15%", pos_left="2%"),
 )
 .set_series_opts(label_opts=opts.LabelOpts(formatter="{b}: {c}"))
 .render("投票结果+环形图.html")
)

打开网页则会显示该代码的运行结果:

pyecharts在数据可视化中的应用详解

4.奥巴马的政治举措民意调查结果的堆叠柱形图;
数据文件:approval_rate.csv
approval_rate.csv内写着:

政治举措,支持,反对,不发表意见
种族问题,52,38,10
教育,49,40,11
恐怖活动,48,45,7
能源政策,47,42,11
外交事务,44,48,8
环境,43,51,6
宗教政策,41,53,6
税收,41,54,5
医疗保健政策,40,57,3
经济,38,59,3
就业政策,36,57,7
贸易政策,31,64,5
外来移民,29,62,9

堆叠柱形图 代码如下:

from pyecharts import options as opts
from pyecharts.charts import Bar
import csv

filename="approval_rate.csv"
data_x=[]
#打开文件循环读取数据
with open(filename,'r', encoding='UTF-8') as f:
 reader = csv.reader(f)
 for data_row in reader:
  data_x.append(data_row)
x=[]			#读取数据列表集中第一行数据进行赋值
b=[]
c=[]
d=[]
e=[]
for index,values in enumerate(data_x):
 if(index>0):
  b.append(values[0])
  c.append(values[1])
  d.append(values[2])
  e.append(values[3])
 elif(index==0):
  x.append(values)
  
print(b)
c = (
 Bar()
 .add_xaxis(b)
 .add_yaxis(x[0][1], c, stack="stack1")
 .add_yaxis(x[0][2], d, stack="stack1")
 .add_yaxis(x[0][3], e, stack="stack1")#显示在同一条柱状图中,不带stack属性则会分为三条柱状图
 .set_series_opts(label_opts=opts.LabelOpts(is_show=False))
 .set_global_opts(title_opts=opts.TitleOpts(title="Bar-堆叠柱形图"))
 .render("政治举措民意调查结果.html")
)

打开网页则会显示该代码的运行结果:

pyecharts在数据可视化中的应用详解

到此这篇关于pyecharts在数据可视化中的应用详解的文章就介绍到这了,更多相关pyecharts 数据可视化内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
python 图片验证码代码
Dec 07 Python
python 生成目录树及显示文件大小的代码
Jul 23 Python
删除目录下相同文件的python代码(逐级优化)
May 25 Python
用Python实现通过哈希算法检测图片重复的教程
Apr 02 Python
Python中import机制详解
Nov 14 Python
遗传算法python版
Mar 19 Python
python中subprocess批量执行linux命令
Apr 27 Python
一行Python代码制作动态二维码的实现
Sep 09 Python
python的sys.path模块路径添加方式
Mar 09 Python
python中uuid模块实例浅析
Dec 29 Python
详解使用python爬取抖音app视频(appium可以操控手机)
Jan 26 Python
python获取带有返回值的多线程
May 02 Python
python numpy实现rolling滚动案例
Jun 08 #Python
Python如何向SQLServer存储二进制图片
Jun 08 #Python
python求numpy中array按列非零元素的平均值案例
Jun 08 #Python
Python过滤掉numpy.array中非nan数据实例
Jun 08 #Python
使用Python FastAPI构建Web服务的实现
Jun 08 #Python
python爬虫把url链接编码成gbk2312格式过程解析
Jun 08 #Python
给ubuntu18安装python3.7的详细教程
Jun 08 #Python
You might like
php+html5实现无刷新图片上传教程
2016/01/22 PHP
深入理解PHP之源码目录结构与功能说明
2016/06/01 PHP
PHP钩子与简单分发方式实例分析
2017/09/04 PHP
jquery 实现的全选和反选
2009/04/15 Javascript
js中有关IE版本检测
2012/01/04 Javascript
JS短路原理的应用示例 精简代码的途径
2013/12/13 Javascript
指定区域的图片自动按比例缩小的js代码(防止页面被图片撑破)
2014/02/21 Javascript
浅谈Unicode与JavaScript的发展史
2015/01/19 Javascript
简单对比分析JavaScript中的apply,call与this的使用
2015/12/04 Javascript
jQuery实时显示鼠标指针位置和键盘ASCII码
2016/03/28 Javascript
AngularJS基础 ng-list 指令详解及示例代码
2016/08/02 Javascript
Angularjs结合Bootstrap制作的一个TODO List
2016/08/18 Javascript
JavaScript 字符串常用操作小结(非常实用)
2016/11/30 Javascript
微信小程序 获取当前地理位置和经纬度实例代码
2016/12/05 Javascript
jQuery Pagination分页插件_动力节点Java学院整理
2017/07/17 jQuery
浅谈vue的props,data,computed变化对组件更新的影响
2018/01/16 Javascript
javascript原生封装一个淡入淡出效果的函数测试实例代码
2018/03/19 Javascript
微信小程序 调用微信授权窗口相关问题解决
2019/07/25 Javascript
Ant design vue中的联动选择取消操作
2020/10/31 Javascript
python中argparse模块用法实例详解
2015/06/03 Python
Nginx搭建HTTPS服务器和强制使用HTTPS访问的方法
2015/08/16 Python
Python 数据处理库 pandas 入门教程基本操作
2018/04/19 Python
python通过zabbix api获取主机
2018/09/17 Python
Python+AutoIt实现界面工具开发过程详解
2019/08/07 Python
Python自动生成代码 使用tkinter图形化操作并生成代码框架
2019/09/18 Python
基于Python获取照片的GPS位置信息
2020/01/20 Python
Python configparser模块操作代码实例
2020/06/08 Python
python中id函数运行方式
2020/07/03 Python
Python实现AES加密,解密的两种方法
2020/10/03 Python
CSS3自定义滚动条样式 ::webkit-scrollbar的示例代码详解
2020/06/01 HTML / CSS
SportsDirect.com新加坡:英国第一体育零售商
2019/03/30 全球购物
城市轨道专业个人求职信范文
2013/09/23 职场文书
德能勤绩工作总结
2015/08/11 职场文书
加强党性修养心得体会
2016/01/21 职场文书
MySQL 发生同步延迟时Seconds_Behind_Master还为0的原因
2021/06/21 MySQL
Centos系统通过Docker安装并搭建MongoDB数据库
2022/04/12 MongoDB