天天看点

pyecharts 大小_微博明星热搜的数据可视化分析 ——基于Python数据可视化神器pyecharts...

pyecharts 大小_微博明星热搜的数据可视化分析 ——基于Python数据可视化神器pyecharts...

    前言

在介绍一组数据时,一张图永远比一串数据更有说服力,并且图表越直观简练,效果越好。百度开发的Echarts就是众多数据可视化神器之一,代码开源免费,在官网上还可以在线生成图表并下载,它的功能强大,可以实现数据视图、图表动态类型切换、图例开关、数据区域选择、多图联动等很多功能,但由于Echarts是基于JavaScript开发的,对JavaScript不甚熟悉的Pythoner们,只能对着大神们制作的各种炫酷图表望洋兴叹。所谓有需求就有创造,GitHub上就有了相关的项目。今天为大家介绍现下最流行的Python库,也是Echarts官网上推荐的Python语言中的扩展库——pyecharts,它覆盖了Echarts的全部图表和大部分功能,让我们在Python中也能使用如此高大上的数据可视化神器。

下面的内容主要分为两部分,第一部分为大家简单介绍pyecharts,第二部分进行实战演练,以微博热搜次数为例子进行数据可视化分析。

1

Pyecharts简介

我们可以通过pip安装pyecharts。运行cmd,输入如下命令:

pip install pyecharts

在官方文档中,开发者将它的使用流程分为八个步骤:

pyecharts 大小_微博明星热搜的数据可视化分析 ——基于Python数据可视化神器pyecharts...

对于不同类型的图表,在第一步创建图表实例的时候选择的类是不同的,常见的基础类型有柱状图/条形图(Bar)、饼图(Pie)、折线图/面积图(Line)等,还有炫酷的3D图表、地图、词云图和热力图等基本图表类共27个,通过参数配置,还可以变换出各种各样的具体图表,是不是想想就很兴奋呢!那么接下来,我们以最简单的柱状图为例,进行一个quick start吧~

第一步,导入相关模块:

from pyecharts import Bar
           

第二步,创建Bar实例:

bar = Bar('柱状图示例','以简单的服装数据为例')
           

其中,命令中的两个参数分别是图表的正标题和副标题,可以为空。

第三步,添加数据:

bar.add('服装',["衬衫", "羊毛衫", "雪纺衫", "裤子", "高跟鞋", "袜子"], [5, 20, 36, 10, 75,90])
           

这条命令中的三个参数是必选参数,其中,第一个参数为图例,第二、三个参数为横坐标和纵坐标上的数据,这两组数据都以列表的形式输入,而且列表中的元素个数必须相等。

我们先使用默认的配置和模板,直接跳到渲染一步:

bar.render(r'E:\\pyecharts\\my_first_chart.html')
           

其中.render( )可以输入文件名作为参数,直接生成目标html文件

以上四条命令,即可生成一个最最基础款的柱形图,效果如下图:

pyecharts 大小_微博明星热搜的数据可视化分析 ——基于Python数据可视化神器pyecharts...

注意观察图的右侧,有一排小按钮,它们实现了诸如下载、刷新、查看或更改数据、切换折线图等功能。其中,将数据从柱状图向折线图切换,是Bar组件本身所自带的功能,也是Echarts提供的功能选项之一,我们在代码上只需要载入确定的数据即可。此处简单展示一下部分功能:将图表切换至折线图,并保存成.png格式的图片。

接下来,让我们再加入一组数据,做成一个堆叠柱形图。

同样需要导入模块,创建图表实例:

from pyecharts import Bar bar = Bar("柱状图数据堆叠示例")#这次我们需要两组数据,为了程序结构清晰,我们先将数据放入列表中:attr = ["衬衫", "羊毛衫", "雪纺衫", "裤子", "高跟鞋", "袜子"] v1 = [5, 20, 36, 10, 75, 90] v2 = [10, 25, 8, 60, 20, 80]
           

我们依然展示六类服装的数据,但这次我们展示两个商家的,v1和v2分别为商家A和商家B的销售数据。然后将数据添加到bar实例:

bar.add("商家A", attr, v1,is_stack=True) bar.add("商家B", attr, v2,is_stack=True)#其中,前三个参数与之前介绍的意义一样,另一个关键字参数为is_stack,当值为True的时候实现数据堆叠。#设置好了之后,渲染导出:bar.render(r'E:\\pyecharts\\my_second_chart.html')
           
pyecharts 大小_微博明星热搜的数据可视化分析 ——基于Python数据可视化神器pyecharts...

接下来我们通过参数配置,丰富和变换图标显示样式。

折线/面积图是用折线将各个数据点连接起来的图表,主要用于展现数据的变化趋势。接下来,我们以武汉市PM2_5日均值与上海市PM2_5日均值数据为例为大家介绍折线和面积图。

#首先,输入如下程序:from pyecharts import Line line=Line("折线/面积图示例","PM2_5日均值") date=["2月22日","2月23日","2月24日","2月25日","2月26日","2月27日","2月28日"] data1=[47,121,108,81,40,27,32] data2=[45,54,60,75,119,39,36]
           

然后,对“上海市”数据,我们添加参数,标记出均值点,设置标记点形状(mark_point_symbol)为三角形;对“武汉市”数据,我们设置其为平滑曲线显示,标记出最大值及最小值点,并将标记点形状设为菱形,标记点大小为50。这样,折线图就制作成功了:

pyecharts 大小_微博明星热搜的数据可视化分析 ——基于Python数据可视化神器pyecharts...

此外,我们还可以添加参数—填冲面积(is_fill)来绘制面积图,并设置折线的宽度及区域的颜色、透明度等,结果如下:

pyecharts 大小_微博明星热搜的数据可视化分析 ——基于Python数据可视化神器pyecharts...

饼图主要以百分比形式显示每一类数值相对于总数值的大小,常用于分类数据。我们以服装数据为例绘制饼图。

首先,依旧是导入模块等步骤:

from pyecharts import Pie pie= Pie(“饼状图”,”服装示例”,title_pos=’center’,width=900)  #设置主副标题居中显示,饼图宽度为900 attr = [“衬衫”,”羊毛衫”, “雪纺衫”, “裤子”,”高跟鞋”, “袜子”] v1 = [5, 20, 36, 10, 75, 90] v2 = [10, 25, 8, 60, 20, 80]
           

接下来就是饼图绘制的重头戏了:设置饼图的中心(圆心)坐标(center),默认设置成百分比;设置标签显示(is_label_show),图例不显示(is_legend_show)。这样,饼图就绘制出来了:

pyecharts 大小_微博明星热搜的数据可视化分析 ——基于Python数据可视化神器pyecharts...

上就是几种常见的图表类型的介绍了。除上述参数外,还有一些参数碍于篇幅限制没有详细列出,如参数"is_convert"可用于交换XY轴;参数"label_color"可改变柱形的颜色;参数"xaxis_label_textcolor"可改变横坐标标签的颜色等。大家在使用过程中可根据需要增减参数。同时,pyecharts还可以绘制雷达图,箱线图,地图,词云图等,功能可谓十分强大。大家也可微信搜索“ECharts图表示例”多多学习下~

2

微博热搜次数的数据可视化分析

上文介绍了pyecharts的基础用法,下面我们以2019上半年明星微博热搜次数的数据为例进行实战演练。

1.生成简单柱状图

首先,我们通过搜索拿到2019年上半年明星热搜次数的数据,这里仅选取8个艺人:周杰伦65次,易烊千玺50次,朱一龙55次,倪大红49次,张艺兴48次,迪丽热巴45次,吴亦凡42次,杨幂49次。

根据数据的特征,我们先选用柱状图进行展示。

#首先,导入柱状图(Bar)模块:from pyecharts.charts import Bar#第二步,利用add方法添加图表数据和设置各种配置项:bar=Bar() #创建Bar实例bar.add_xaxis(["周杰伦", "易烊千玺", "朱一龙", "倪大红","张艺兴","迪丽热巴","吴亦凡", "杨幂"]) bar.add_yaxis("热搜次数", [65,50,55,49,48,45,42,49])
           
# 其中,bar.add_xaxis()中的参数为横坐标上的数据;bar.add_yaxis()中的第一个参数为图例,第二个参数列表为纵坐标上的数据。pyecharts 所有方法均支持链式调用,在此也可写为:bar = (   Bar()   .add_xaxis(["周杰伦", "易烊千玺", "朱一龙", "倪大红","张艺兴","迪丽热巴","吴亦凡", "杨幂"]) #加入横坐标参数   .add_yaxis("热搜次数", [65,50,55,49,48,45,42,49]) #加入纵坐标数据)#第三步,使用默认的配置和模板,直接渲染出柱形图:bar.render(r'E:\pyecharts学习\FirstBar.html')
           

render会生成本地 HTML文件,默认会在当前目录生成render.html文件。它也支持 path 参数,如程序所示可以设置文件保存位置,文件需要用浏览器打开。

通过以上命令,就可生成一个最基础的关于“2019上半年明星热搜次数”的柱形图,如下图所示:

pyecharts 大小_微博明星热搜的数据可视化分析 ——基于Python数据可视化神器pyecharts...

2.改变图表结构

当一个横坐标值对应两个或多个纵坐标数据时,只需要再添加一次或多次bar.add_yaxis()信息。我们再加入2018下半年这些明星上微博热搜的次数,则改变后的纵坐标的数据如下所示:

bar.add_yaxis("2018下半年", [24,63,81,0,42,28,66,31]) #加入纵坐标参数bar.add_yaxis("2019上半年", [65,50,55,49,48,45,42,49]) # 相对于一般纵向放置的柱状图,小编觉得横向的Bar更直观更好看,那么改变方向只需要向程序中加入:bar.reversal_axis()
           

数据的变化导致标题也需要变化,最终的柱状图如下所示:

pyecharts 大小_微博明星热搜的数据可视化分析 ——基于Python数据可视化神器pyecharts...

根据图表,我们可以看出明星上微博热搜的次数与他们参演的电视剧和综艺节目或者参加的活动有很大的关系。例如,倪大红在2019年参演的电视剧《都挺好》爆红之后,由于演技爆表以及角色的设定受到观众一直喜欢,故热搜次数和2018有很大差距。

小结

这些数据和信息通过柱状图都清晰地展示了出来,感兴趣的朋友们可以自己动手试一试~

本期作者:许晟榕

本期编辑校对:秦范

长按,关注数据皮皮侠

pyecharts 大小_微博明星热搜的数据可视化分析 ——基于Python数据可视化神器pyecharts...