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 相关文章推荐
json跨域调用python的方法详解
Jan 11 Python
Python算法应用实战之栈详解
Feb 04 Python
python itchat实现微信自动回复的示例代码
Aug 14 Python
在scrapy中使用phantomJS实现异步爬取的方法
Dec 17 Python
pandas 把数据写入txt文件每行固定写入一定数量的值方法
Dec 28 Python
python和c语言的主要区别总结
Jul 07 Python
使用Python进行防病毒免杀解析
Dec 13 Python
pytorch torchvision.ImageFolder的用法介绍
Feb 20 Python
python实现井字棋小游戏
Mar 04 Python
PyQt5事件处理之定时在控件上显示信息的代码
Mar 25 Python
Python通过kerberos安全认证操作kafka方式
Jun 06 Python
Pytest如何使用skip跳过执行测试
Aug 13 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
FCKeditor添加自定义按钮
2008/03/27 PHP
php判断str字符串是否是xml格式数据的方法示例
2017/07/26 PHP
php-fpm超时时间设置request_terminate_timeout资源问题分析
2019/09/27 PHP
用js统计用户下载网页所需时间的脚本
2008/10/15 Javascript
JS定义回车事件(实现代码)
2013/07/08 Javascript
框架页面高度自动刷新的Javascript脚本
2013/11/01 Javascript
兼容最新firefox、chrome和IE的javascript图片预览实现代码
2014/08/08 Javascript
jQuery Ajax中的事件详细介绍
2015/04/16 Javascript
jQuery ajax时间差导致的变量赋值问题分析
2016/01/22 Javascript
javascript每日必学之运算符
2016/02/16 Javascript
JavaScript requestAnimationFrame动画详解
2017/09/14 Javascript
Vue CLI3创建项目部署到Tomcat 使用ngrok映射到外网
2019/05/16 Javascript
js+css实现扇形导航效果
2020/08/18 Javascript
在树莓派2或树莓派B+上安装Python和OpenCV的教程
2015/03/30 Python
python中list常用操作实例详解
2015/06/03 Python
深入理解python函数递归和生成器
2016/06/06 Python
利用python GDAL库读写geotiff格式的遥感影像方法
2018/11/29 Python
Python 普通最小二乘法(OLS)进行多项式拟合的方法
2018/12/29 Python
python简单贪吃蛇开发
2019/01/28 Python
python绘制地震散点图
2019/06/18 Python
python制作英语翻译小工具代码实例
2019/09/09 Python
使用Python生成200个激活码的实现方法
2019/11/22 Python
从pandas一个单元格的字符串中提取字符串方式
2019/12/17 Python
Python如何使用PIL Image制作GIF图片
2020/05/16 Python
CSS3 实现的火焰动画
2020/12/07 HTML / CSS
韩国邮政旗下生鲜食品网上超市:epost
2016/08/27 全球购物
最耐用行李箱,一箱永流传:Briggs & Riley(全球终身保修)
2017/12/07 全球购物
英国国家美术馆商店:National Gallery
2019/05/01 全球购物
天逸系统(武汉)有限公司Java笔试题
2015/12/29 面试题
行政前台岗位职责
2013/12/04 职场文书
《要下雨了》教学反思
2014/02/17 职场文书
白莲教口号
2014/06/18 职场文书
高中生第一学年自我鉴定2015
2014/09/28 职场文书
2019年新郎保证书3篇
2019/10/17 职场文书
PHP实现创建以太坊钱包转账等功能
2021/04/21 PHP
Java并发编程必备之Future机制
2021/06/30 Java/Android