社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Python

Python 数据可视化神器分享:pyecharts

编程派 • 5 年前 • 670 次点击  

文 | wengjj

编辑 | EarlGrey

推荐 | 编程派公众号(ID:codinpy)

我们都知道python上的一款可视化工具matplotlib,而前些阵子做一个Spark项目的时候用到了百度开源的一个可视化JS工具-Echarts,可视化类型非常多,但是得通过导入js库在Java Web项目上运行。

平时用Python比较多,于是就在想有没有Python与Echarts结合的轮子。Google后,找到一个国人开发的一个Echarts与Python结合的轮子:pyecharts,下面就来简述下pyecharts一些使用细则:

写这篇文章用的是Win环境,首先打开命令行(win+R),输入:

但笔者实测时发现,由于墙的原因,下载时会出现断线和速度过慢的问题导致下载失败,所以建议通过清华镜像来进行下载:

  1. pip install -i https://pypi.tuna.tsinghua.edu.cn/simple pyecharts

出现上方的信息,即代表下载成功,我们可以来进行下一步的实验了!

使用之前我们要强调一点:就是python2.xpython3.x的编码问题,在python3.x中你可以把它看做默认是unicode编码,但在python2.x中并不是默认的,原因就在它的bytes对象定义的混乱,而pycharts是使用unicode编码来处理字符串和文件的,所以当你使用的是python2.x时,请务必在上方插入此代码:

  1. from __future__ import unicode_literals

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

柱状图-Bar

  1. //导入柱状图-Bar

  2. from pyecharts import Bar

  3. //设置行名

  4. columns = ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"]

  5. //设置数据

  6. 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]

  7. 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]

  8. //设置柱状图的主标题与副标题

  9. bar = Bar("柱状图", "一年的降水量与蒸发量")

  10. //添加柱状图的数据及配置项

  11. bar.add("降水量", columns, data1, mark_line=["average"], mark_point=["max", "min"])

  12. bar.add("蒸发量", columns, data2, mark_line=["average"], mark_point=["max", "min"])

  13. //生成本地文件(默认为.html文件)

  14. bar.render()

运行结果如下:

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

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

饼图-Pie

  1. //导入饼图Pie

  2. from pyecharts import Pie

  3. //设置主标题与副标题,标题设置居中,设置宽度为900

  4. pie = Pie("饼状图", "一年的降水量与蒸发量",title_pos='center',width=900)

  5. //加入数据,设置坐标位置为【25,50】,上方的colums选项取消显示

  6. pie.add("降水量", columns, data1 ,center=[25,50],is_legend_show=False)

  7. //加入数据,设置坐标位置为【75,50】,上方的colums选项取消显示,显示label标签

  8. pie.add("蒸发量", columns, data2 ,center=[75,50],is_legend_show=False,is_label_show=True)

  9. //保存图表

  10. pie.render()

箱体图-Boxplot

  1. //导入箱型图Boxplot

  2. from pyecharts import Boxplot

  3. boxplot = Boxplot("箱形图", "一年的降水量与蒸发量")

  4. x_axis = ['降水量','蒸发量']

  5. y_axis = [data1,data2]

  6. //prepare_data方法可以将数据转为嵌套的 [min, Q1, median (or Q2), Q3, max]

  7. yaxis = boxplot.prepare_data(y_axis)

  8. boxplot.add("天气统计", x_axis, _yaxis)

  9. boxplot.render()

折线图-Line

  1. from pyecharts import Line

  2. line = Line("折线图","一年的降水量与蒸发量")

  3. //is_label_show是设置上方数据是否显示

  4. line.add("降水量", columns, data1, is_label_show=True)

  5. line.add("蒸发量", columns, data2, is_label_show=True)

  6. line.render()

雷达图-Rader

  1. from pyecharts import Radar

  2. radar = Radar("雷达图", "一年的降水量与蒸发量")

  3. //由于雷达图传入的数据得为多维数据,所以这里需要做一下处理

  4. 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]]

  5. 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]]

  6. //设置column的最大值,为了雷达图更为直观,这里的月份最大值设置有所不同

  7. schema = [

  8. ("Jan", 5), ("Feb" ,10), ("Mar", 10),

  9. ("Apr", 50), ("May", 50), ("Jun", 200),

  10. ("Jul", 200), ("Aug", 200), ("Sep", 50),

  11. ("Oct", 50), ("Nov", 10), ("Dec", 5)

  12. ]

  13. //传入坐标

  14. radar.config(schema)

  15. radar.add("降水量",radar_data1)

  16. //一般默认为同一种颜色,这里为了便于区分,需要设置item的颜色

  17. radar.add("蒸发量",radar_data2,item_color="#1C86EE")

  18. radar.render()

散点图-scatter

  1. from pyecharts import Scatter

  2. scatter = Scatter("散点图", "一年的降水量与蒸发量")

  3. //xais_name是设置横坐标名称,这里由于显示问题,还需要将y轴名称与y轴的距离进行设置

  4. scatter.add("降水量与蒸发量的散点分布", data1,data2,xaxis_name="降水量",yaxis_name="蒸发量",

  5. yaxis_name_gap=40)

  6. scatter.render()

图表布局 Grid

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

  1. from pyecharts import Grid

  2. //设置折线图标题位置

  3. line = Line("折线图","一年的降水量与蒸发量",title_top="45%")

  4. line.add("降水量", columns, data1, is_label_show=True)

  5. line.add("蒸发量", columns, data2, is_label_show=True)

  6. grid = Grid()

  7. //设置两个图表的相对位置

  8. grid.add(bar, grid_bottom="60%")

  9. grid.add(line, grid_top="60%")

  10. grid.render()

两图结合 Overlap

  1. from pyecharts import Overlap

  2. overlap = Overlap()

  3. bar = Bar("柱状图-折线图合并", "一年的降水量与蒸发量")

  4. bar.add("降水量", columns, data1, mark_point=["max", "min"])

  5. bar.add("蒸发量", columns, data2, mark_point=["max", "min"])

  6. overlap.add(bar)

  7. overlap.add(line)

  8. overlap.render()

总结一下使用流程

  1. 导入相关图表包

  2. 进行图表的基础设置,创建图表对象

  3. 利用add()方法进行数据输入与图表设置(可以使用printechartsoptions()来输出所以可配置项)

  4. 利用render()方法来进行图表保存

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

原文:挖掘之家,http://120.79.254.53


回复下方「关键词」,获取优质资源


回复关键词「 pybook03」,立即获取主页君与小伙伴一起翻译的《Think Python 2e》电子版

回复关键词「pybooks02」,立即获取 O'Reilly 出版社推出的免费 Python 相关电子书合集

回复关键词「书单02」,立即获取主页君整理的 10 本 Python 入门书的电子版



豆瓣 9.1 分,中文版销量 30 多万,零基础也能用这本书学会 Python

你想要的 IT 电子资源,这里可能都有


Python 或将超越 C、Java,成为最受欢迎的语言

Python 容器使用的 5 个技巧和 2 个误区

如何写出优雅的 Python 函数?

题图:pexels,CC0 授权。


Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/36596
 
670 次点击