pyecharts数据可视化

数据处理是Python的强项,借助于一些数据可视化的库,比如pyecharts就可以做出非常精美的交互式图表啦。

python的库非常多,每个库又有非常多的函数,不是每一个库都会被写成非常详细的教程,每个函数的用法我们也是没法记住的,所以在使用任何一个python库时,都要去翻阅对应的技术文档。

Pyecharts入门

pyecharts 可以生成 Echarts 图表,Echarts 是百度开源的一个数据可视化 JS 库,广泛用于在网页上呈现可以交互的图表,有了pyecharts,我们也可以实用Python来生成好看的交互图表啦。

技术文档:pyecharts技术文档

技术文档可以先粗略浏览一下,因为技术文档通常比较大而全,直接阅读可能没法快速上手,等你实战完这一章的教程之后,如果你想继续深入,可以通过阅读文档的方式来提高。

安装pyecharts

为了能更好的使用pyecharts,我们把pyecharts依赖的一些库也一起安装,除了和pyecharts_snapshot是必须的,下面的大家可以选择性安装,不过为了学习的需要,建议大家都安装。

  • pyecharts就是主要库啦
  • pyecharts_snapshot 用于生成图表,如果图表没有显示出来,可以用之前学的pip list来检查一下它是否安装成功
  • echarts-themes-pypkg:这个主要用于pyecharts的主题生成

注意Mac要把pip写成pip3哦~

制作第一个信息图表

我们使用VS Code在python-project目录下新建一个bar.py文件,然后输入下面代码(#里面的内容不用输哦,主要是为了让大家理解里么的代码):

然后再来执行python文件,这时会在python-project目录下生成一个render.html文件,在电脑上找到该文件,双击打开或使用浏览器打开。

再执行一次python文件,会把之前生成的render.html给覆盖掉,这个可以留意一下。

使用电脑自带的终端与VS Code的终端执行后html文件的位置会有所不同,这是因为执行路径的问题,这个以后你们可以自行研究。

图表的设置

我们说过Python不仅有很多库,而且每个库有很多函数,下面的这些设置也是阅读pyecharts文档而整理抄袭过来的,所以大家千万不要去记,先搞清楚是怎么一回事,然后再去翻阅技术文档哦~

设置不同的主题样式

在上面的案例中,我们使用到了bar.use_theme(),这个可以设置主题的样式,默认的是dark,主题样式还有vintage、macarons、infographic、shine、roma、westeros、wonderland、chalk、halloween、essos、walden、purple-passion、romantic.

比如我们想换成wonderland样式,只需修改use_theme()里的值即可。把上面的案例里的vintage换成wonderland,然后再来执行bar.py文件,查看效果:

设置画布的样式

我们可以设置画布的宽度(默认为800px)、高度(默认为400px)以及背景颜色(默认为白色),上面的案例我们没有给画布设置样式,所以画布的宽、高度、背景颜色都是默认值。

我们可以在Bar()里给柱状图表设置宽度为1200px,高度为600px,背景颜色为#f7e7cd,修改之后再来执行python文件查看效果:

设置右侧实用工具箱

在图表的右侧有一个工具箱,可以下载图片、查看数据,有时候我们希望显示更多内容,有时为了展示我们希望不要有工具箱出现,这些都是可以设置的。

比如我们想显示更多的工具,可以在add()里添加设置is_more_utils为True。

如果你不希望显示工具箱,可以在add()里添加设置is_toolbox_show为False。

设置x轴、y轴的名称

我们只需要给add()函数传入xaxis_name=””、yaxis_name=””值即可。

更多设置比如设置坐标线的颜色、坐标线的宽度、坐标轴名称的位置、坐标轴标签字体的颜色和大小等,以及提示框、图形上的文本标签等等大家都可以以后查阅技术文档来了解哦~

数据比较与数据堆叠

数据比较

在实际作图中,我们希望可以对多个类别的数据进行比较,比如在这里我们希望可以通过柱状图来比较两个厂家商品销量。这时我们x轴的商品类型不变,而在y轴有两个数据,我们来看一下使用pyecharts是怎么处理的。

新建一个python文件,比如bar2.py,输入下面的代码,然后保存

我们只需要再在y坐标添加一组数据即可。思考一下为什么是y坐标?,如果是三组数据来对比呢?大家应该知道怎么做了吗?

数据堆叠

为了更加鲜明的对比数据,我们可以把数据进行堆叠显示,这时只需要给add()传入is_stack=True即可。参考下面的代码,修改上面案例的代码,保存后运行,然后打开render.html来查看效果

折线图Line

折线图是用折线将各个数据点标志连接起来的图表,用于展现数据的变化趋势。

折线图案例

比如我们用折线图来展示深圳一周气温的变化,除了需要引入Line模块,和制作柱状图没有太大的区别哦~

折线设置为平滑曲线

气温的变化应该是平滑过度的,我们可以给add()设置is_smooth为True来让折线变成平滑曲线:

填充曲线绘制面积

要给折线图绘制面积填充,需要设置三个值,is_fill是否填充设置为true,area_color填充的颜色,比如我们设置为#f60,area_opacity填充颜色的透明度,比如我们设置为0.3(值为0~1,越小越透明),将上面的案例对应代码修改为以下代码,然后再来生成render.html,使用浏览器打开查看效果。

柱状图Bar和折线图Line的堆叠

有的时候我们会在一张图表上使用多种不同的图表类型来展示数据,这时可以使用Overlap将不同类型图表画在一张图上。利用第一个图表为基础,往后的数据都将会画在第一个图表上。

饼图Pie

饼图主要用于表现不同类目的数据在总和中的占比。每个的弧度表示数据数量的比例。

使用VS Code编辑器新建一个pie.py,然后输入以下代码,使用命令行工具执行python文件,使用浏览器打开生成的render.html查看效果。

设置为环形图

饼图默认半径为75,也就是radius的默认值为[0,75],这里的0是内半径,75为外半径,如果给radius的内半径设置的值大于0,饼图就变成了环形图,比如:

地图

要使用Pyecharts生成地图,首先要下载echarts的地图包,大家可以在命令行窗口逐行输入命令,分别下载,Mac要改成pip3哦。

  • echarts-themes-pypkg:可以让Echarts更换不同的色系;
  • echarts-countries-pypkg:世界地图和 213 个国家,包括中国地图;
  • echarts-china-provinces-pypkg:中国23 个省,5 个自治区地图
  • echarts-china-cities-pypkg:370个中国城市
  • echarts-china-counties-pypkg:2882 个中国县·区
  • echarts-china-misc-pypkg:11 个中国区域地图,比如华南、华北。

地图主要用于地理区域数据的可视化。我们来把中国部分省份的人口的数据显示在中国地图上。

  • 这里的value的数量需要是数字;
  • 我们直接写省市的名称,程序是自动匹配到地图上,所以这里设置的province列表为省市名,不能随便写名字,比如把“广东”写成“广东省”
  • maptype=’china’,这里是指地图类型,默认为china中国,is_label_show=True表示是否在地图上显示省市的名称。

使用VS Code新建一个map.py,输入上面代码,保存后执行python文件,使用浏览器打开render.html查看一下效果。

给地图着色

我们看到上图只是把列表里面的省市使用红点给标记出来了,如果想给地图着色应该怎么处理呢?我们需要设置两个值

  • is_visualmap=True,是否给地图着色
  • visual_range=[a, b],着色的数字区域,默认是0到100,由于我们的数据是人口,数字远远超出100,这时我们可以给visual_range设置为[5000, 12000]

如何给标明城市(使用Geo图表)、以及如何只画某一个省份如广东省的地图呢?大家可以去查阅技术文档。

词云图

词云图,也叫文字云,是对文本中出现频率较高的“关键词”予以视觉化的展现,词云图过滤掉大量的低频低质的文本信息,使得浏览者只要一眼扫过文本就可领略文本的主旨。

这里的name大家一看就知道是词语,而value是词频,上面的数据比较少,更多数据效果会更佳,大家可以相应添加

设置词云图的轮廓

词云图轮廓,有’circle’, ‘cardioid’, ‘diamond’, ‘triangle-forward’, ‘triangle’, ‘pentagon’, ‘star’可选,比如我们设置为五角星star

设置词云图文字大小范围

词云词文字大小范围默认为12px到60px,也是就word_size_range的默认值为[12,60],我们可以设置为20px到100px