数据可视化 | 讲究!用 Python 制作词云图学问多着呢

我想请问一下,数据可视化 | 讲究!用 Python 制作词云图学问多着呢
最新回答
醉酒吟春秋

2024-11-28 08:08:10

文本可视化虽然不是一个常被提及的数据可视化领域,但提及时,大多数人可能会首先想到“词云图”。词云图通过创建“关键词云层”或“关键词渲染”来对文本中频率较高的关键词进行视觉上的突出。它过滤掉大量文本信息,使浏览者只需一眼就能把握文本主旨。

在上期文章中,我们介绍了如何使用 Python 进行文本词频分析,重点讲解了文本预处理和中文分词。本期文章将在此基础上,继续介绍如何使用 Python 制作精美的词云图。

我们以《“十四五”规划》作为词频统计和制作词云图的对象,出现频率较高的词语如下所示:

Tips: 1. 本文重点在第三部分:stylecloud 2. 本文中代码的注释同样值得一看 3. 词云图的词语分布(颜色,位置,方向)是随机的,即每次运行都可以得到一个全新的词云图,所以当不满意某个词云图时,不妨多运行几遍代码,一定会得到一个满意的。

使用pyecharts生成词云图是一件非常简单的事情,只需要简单的几行代码即可。首先,pyecharts需要的语料格式如下(也可以使用词语权重来替代词频):

根据词频统计Excel表生成以上格式的代码如下:

那么使用pyecharts生成词云图的代码如下,打开生成的html文件即可看到生成的词云图,如下图所示:

我们相信,这种效果的词云图应该,可能,大概,或许不能入各位法眼……

wordcloud是使用Python制作词云图使用最广泛的工具,但是使用它制作词云图并不是一件简单的事情:首先,在安装它的时候,就很有可能遇到麻烦,因为wordcloud库需要依赖Microsoft Visual C++环境,需要事先安装该组件;其次,为了词云图的美观,使用过程中需要配合其他第三方库使用,比如PIL(用于加载背景图)。

wordcloud可以接收多种格式的语料,可以是空格分隔的词语串,也可以是词语,词频组成的字典。下面我们使用词频统计Excel表构建字典语料,代码如下:

词云背景(形状)图使用下图(椭圆.png):

使用wordcloud生成词云图的代码如下:

以上就是使用wordcloud生成的词云图了,实际效果也是比较不错的,它的优点是可以控制的参数很多,可以尽情DIY(包括背景图,主题颜色,词语大小等等),缺点是代码较复杂,依赖的环境/工具较多。

stylecloud是最接近完美的Python词云库!也是本文最想介绍的词云工具!stylecloud是一款简单易用的Python词云生成第三方库,使用非常简单,但是得到的词云图却高级感十足。

Tips: 事实上,stylecloud是wordcloud的高级封装版本。这意味着stylecloud库需要依赖wordcloud库。这也是我们认为它接近完美而非真正完美的原因。

首先,我们认为影响词云图效果的因素有两大类,即语料和词云图形,其中语料的质量可以通过分词来控制;那么如何提高词云图形的质量呢?我们认为最影响词云图形的因素有以下3个:1.词云形状2.配色方案3.字体

下面我们就从这三个方面入手,一步一步美化词云图。先使用stylecloud制作一个默认的词云,但在此之前需要构建语料。stylecloud需要的语料可以是词语列表、词语词频csv文件或词语词频txt文件,我们使用词频统计表的前200个词语来构建不同格式的语料,构建语料的代码如下(不熟练的小伙伴也可以手动填写词语和词频来生成语料):

生成的语料展示如下(使用记事本打开后):

使用stylecloud库(使用默认参数)生成词云图的代码和词云图如下:

一面旗!使用默认参数生成的词云图还是非常不错的,另外,从词语数量的增多可以看出,使用更多的词语可以使词云图更加饱满,视觉效果更佳。

下面我们将逐步修改词云形状,配色方案和字体来DIY一个更令人满意的词云图。

(1)词云形状

stylecloud词云形状使用特定网站中的图标,进入该网站,滚动鼠标下拉找到【查看图标】,点击进入后即可在1600+图形中选择中意的形状,选择图形后,点击图形右上角即可复制图形的名称,如下图所示:

我们再将复制到的内容赋给参数icon_name即可生成这个形状的词云,代码如下:

另外,再添加参数invert_mask=True还可以将形状反转,(代码省略)直接展示结果:

(2)配色方案

配色方案将直接影响词云图的观感,在展示某些主题下的文本词云时,可以选择合适的配色。比如当我们制作与海洋产业有关系的文本词云时,可以设置主题颜色为蓝色/绿色/青色系列颜色。stylecloud中词云的配色可以由Python配色工具库palettable来提供,其默认的配色方案也是由palettable所提供的。我们找到了民间大神整理的配色方案PDF文档,文档中部分配色方案如下图所示:

如果想要使用图中的配色方案,只需在生成词云的代码前面声明(使用上图中左侧的代码)即可,例如,我们使用上图中Blues_7蓝色配色方案,声明配色方案的代码如下:

此外,假如配色方案中没有我们喜欢的配色方案,那么我们还可以自定义配色方案,将选择的颜色填入一个列表,再将颜色列表赋给参数colors即可。那么如何选择颜色呢?我们为大家推荐一个可以DIY的无广告调色网页。该网页支持用户自己调色(通过控制R.G.B颜色权重)来生成对应颜色的十六进制代码,如下图所示:

也可以在已有的几百种颜色中进行选择,如下图所示:

选中颜色后只需将对应的颜色代码填入colors参数列表中即可。我们选择几种较浅的暖色系颜色组成一个配色方案,代码如下:

除了颜色的变化,我们还可使用参数gradient来控制词云图色温变化的梯度,当不使用这个参数时,每个词语的颜色是可用颜色中随机的一种。也就是上面词云图中混乱无序的样子。当我们将gradient参数设置为任意非空字符串,就可以使词云图中的颜色分布按照色温,色深沿着特定方向变化,效果非常Nice。代码如下(注意参数size变为整数,否则会报错):

(3)字体

使用不同字体同样可以优化词云图的观感,对Windows用户来说,选择字体并不难,系统字体默认的存储路径为:C:\Windows\Fonts\,找到这个文件夹就可以查看系统中的字体,双击字体图标可以预览字体,不过很多字体并没有对中文做优化,因此设置后可能存在无法显示的情况。预览字体的截图如下:

鼠标右击图标后选择【属性(R)】可以查看该字体文件的名称,如下图所示:

我们使用【微软雅黑】字体(字体名为msyhbd.ttc,使用font_path参数设置字体路径)重新生成一个词云(由于字体加粗,我们将最大词数由200减少到150)。最大字号下调至150,图片尺寸由600调整为1000,这个操作可以提高词云图的分辨率,防止小词语模糊不清。代码如下:

本期文章我们为大家详细介绍了如何使用Python制作词云图,在制图过程中,我们可以通过设置不同的参数来改变词云的形状、配色、字体、词数等词云图要素。学习这些之后,我们就可以自己动手,制作想要的词云图了。希望本文内容对大家有所帮助。