您的位置:首页 > 编程语言 > Python开发

小白必看:Python数据图表可视化+案例详解

2020-04-15 17:09 204 查看

【推荐阅读】微服务还能火多久?>>>

对于人类来说,图案和文字这两种信息表现方式,图案应该更早于文字被发明,现代考古人员时常在山洞里发现原始人刻画的一些岩画。

总的来说,图案比文字更具有视觉冲击力和表现力,所以在计算机世界里,我们通常喜欢把文字数据转化为图表数据,用于向别人更加精准有效的传达数据信息。

今天我们就来讲讲在Python中如何把数据转换为可视化的图表。

本文知识点:

  • pyecharts简介与安装
  • pyecharts创建第一个图表
  • pyecharts的实际数据应用

pyecharts简介与安装

说到 pyecharts 要先提到它的前身 ECharts, ECharts是由百度开源的一款使用 JavaScript 实现的开源可视化库,涵盖了各种图表、满足各类业务需求,现在已经命名为Apache ECharts(由Apache基金会接管)。

而 pyecharts 就是 ECharts 在Python中的实现,其核心原理主要是写了一个Python的库,封装了ECharts各类图表的基本操作,然后通过渲染机制,输出一个包含JS代码的HTML文件,其核心思想还是借用了ECharts的底层库,只是用Python封装了一次之后便于本地应用程序使用罢了。

安装pyecharts很简单,直接pip即可

pip install pyecharts

现在pyecharts的最新版本是 1.7.1 需要Python3.6+的环境运行。

pyecharts创建第一个图表

pyecharts的使用很简单,直接import需要用到的图表组件、设置相关参数、渲染即可。

现在让我们先用几行代码来创建一个柱状图。

以上代码会在程序当前运行目录创建一个render.html的文件,用于展示图表。

来解释一下代码

from pyecharts.charts import Bar 用于导入Bar 这个类,Bar就是用于柱状图处理的类。

bar = Bar() 实例化Bar类,命名为bar。

bar.add_xaxis()方法用于添加柱状图的X坐标数据,它可以接收一个列表或元祖数据。

bar.add_yaxis()方法用于添加柱状图的Y坐标数据,它可以接收一个列表或元祖数据。

bar.render()用于渲染结果HTML内容,不传参数默认文件名为 render.html,也可以自定义文件名作为参数传递进去。

再来看看render.html的源码。

通过源码我们可以看他它实际上就是一堆HTML+JS代码的实现,通常情况下我们不用关心render.html的源码内容,只需要生成之后在浏览器直接展示它即可。

介绍完pyecharts的基本使用后,让我们来一点实际的例子吧。

pyecharts的实际数据应用

首先我想到了以成都市2019年的统计年鉴数据作为数据源进行一系列的图表展示。

接下来,我准备选择几组具体的数据来进行图表展示。

第一组我选择成都历年社会经济主要指标人均水平的数据。

如下图:

把地区生产总值数据提取出来,代码如下:

我们可以看到代码跟之前的例子变化不大,无非是把x,y轴的数据换了而已。

最后通过图表的展示,我们可以发现2000年后的10多年间,成都的人均GDP变化巨大。

数据太单薄?我们多加一个居民储蓄余额来看看。

柱状图的参数基本规则就是X轴只有一个,Y轴可以多个。

现在再来看看两个Y轴数据的表现。

毫不夸张的说,我的储蓄余额肯定给成都人民严重拖后腿了......

接着我们来弄一个饼图,用来分析一下人口数据,数据源如下。

最终代码和效果如下:

饼图的代码和柱状图稍微有点区别,来解释一下吧。

首先引入了一个新的库,叫做opts,该库主要用于图表参数设置的,在这里我们用c.set_global_opts(title_opts=opts.TitleOpts(title="成都全市人口男女比例")) 把图表标题设置为了成都全市人口男女比例,这个写法是pyecharts封装的不够优雅,大家记住这种写法就是了,set_global_opts() 函数可以用来设置标题、工具条、提示文本等等。

在第6行有一个zip(keys,values)的操作,zip()函数用于将可迭代的对象作为参数,将对象中对应的元素打包成一个个元组,然后返回由这些元组组成的列表。

简单的说就是zip()函数可以用于重组多个迭代对象,重组过程中相同元素下标的数据会被重新打包组合在一起,比如将["a","b","c"]和[1,2,3]这两个列表进行zip之后,就会得到一个包含 三个元组('a', 1)、('b', 2)、('c', 3) 的对象,因为直接zip()之后得到的是一个迭代对象,而不是列表或者元组数据。

所以如果我们要直接将结果作为数据使用,需要进行一次类型转换 list(zip(**args))。

那么显而易见,本例子中的zip()结果就应该是 ('男性', 7322452)、('女性', 7438028)。这个数据正好是饼图需要的。

在第9行有一个 c.add("", list(data))的代码,Pie类的add()函数用于饼图绘制所需要用到的参数。

至于为什么第一个参数是一个空字符串,其实因为add()函数第一个参数名为series_name,用来表示序列名称,其实在图表展示上没什么用处,所以我就给它设置为空字符串了,大家可以随意设置什么都行 。最后list(data)没什么好说的,就是把zip结果转换成列表,

在11行的render()中,我自定义了输出文件名pie.html。

其实我们也可以在一个页面上提供多个图表。可以用多个函数将所以用到图表的代码包装起来,然后统一调渲染即可。

最终效果如下:

今天主要讲到了使用pyecharts产生各种图表的基础之后,还有各种酷炫的图表效果等待着我们去一一实现,例如用地图展现各地区人均消费水平,消费品种等等。

文源网络,仅供学习之用,如有侵权,联系删除。

我将优质的技术文章和经验总结都汇集在了我的公众号【Python圈子】里。

在学习Python的道路上肯定会遇见困难,别慌,我这里有一套学习资料,包含40+本电子书,600+个教学视频,涉及Python基础、爬虫、框架、数据分析、机器学习等,不怕你学不会!

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: