一、生成歌词词云
首先我们需要先获取所有爬取到的歌曲的歌词,将他们合成字符串
随后提取其中的中文,再合成字符串
之后使用jieba进行分词,并将其中分出来的长度大于等于2的词保存
接下来为生成的词云选择一张好看的图片,就可以开始生成了!
WordCloud参数中的contour_width=1, contour_color=lightblue’分别为背景图片轮廓线条的粗细和颜色,如果没有设置则不会出现轮廓,font_path是用来指定字体的
生成后可以通过show展示也可以通过保存到本地并打开,最终结果如下
二、热门歌手歌曲量饼图
首先是获得热门歌手列表以及热门歌手歌曲量
随后用每个歌手歌曲数量除以所有这十个歌手的总歌曲数量,得到每个歌手歌曲量的占比
接下来可以选择设置哪一块突出显示,如图中周杰伦部分突出显示
如下只需要将突出部分的值设置大即可
接下来就可以生成饼图了
其中x是歌曲量占比的列表,labels是对应的标签(在此图中则为歌手的姓名),explode就是上文提到的突出显示,这三个列表中的各个值是一一对应的,autopct是设置占比数值的显示方式,3.1f则表示占宽为3位(如果大于会原样输出),精度为1的浮点数
同样可以选择直接show展示,或者保存到本地再打开
三、歌曲热度占比条形图
在之前我们通过爬虫获取了top500的歌曲的信息(如下),现在我们希望对歌曲的热度进行分析,生成柱状图
效果图如下:
本来是想生成歌手拥有热门歌曲数量的柱形图的,但是那个爬取热门歌曲的网站中那些热门歌曲没有对应的歌手,还需要自己再去其他网站获得每首歌曲对应的歌手,太麻烦了就没这么做了,有兴趣的小伙伴可以自己实现一下
首先我们要获得每个热度范围的歌曲数量
下面的data列表就是对应x元组范围的歌曲数量
我们只要通过遍历歌曲热度列表,每次都在其data列表对应热度+1,最终即可得到每个热度范围的歌曲数量
接下来就是创建柱状图,首先解决中文乱码问题
随后即可通过plt.bar创建,其中第一个参数为横坐标数据,第二个参数为纵坐标数据,第三个参数为为柱状图填充颜色,第四个参数为透明度
title,xlabel,ylabel显然就是该柱状图的标题,横坐标和纵坐标的名称
责任编辑: