Python排错集之WordCloud模块的正确“打开方式”

Python排错集之WordCloud模块的正确“打开方式”

0 引言

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

无图不真相,下图为《数据可视化之用Python制作词云图》文章中的一个效果图,这是通过对19年政府工作报告进行解析并生成的词云图,大家感受下。

由WordCloud模块生成的词云图,功能强大实用自不必说,但若想正常的用起来,还是需要先解决一些麻烦。本文以Windows系统为例,进行一遍扫雷,帮大家快速用上WordCloud模块。

1 环境

操作系统:Windows

Python版本:3.7.2

2 开始排雷

2.1 模块安装时遇C++ Error

WordCloud模块,同其它第三方模块一样,可直接使用pip命令进行安装,但是很快就踩上了第一颗雷。安装过程出现Error被中止,Microsoft Visual C++ 14.0 is required. 如下图:

这个报错的原因及解决方案,在之前文章中已有详细说明,这里就不再赘述。参见:

《装Python第三方库遇Error:C++ 14.0 is required. 》

2.2 使用过程中报OS Error

在模块安装好之后,我们就可以利用WordCloud模块生成自己的词云图了。相关代码写好之后,运行一下试试。呀!一不小心就会踩上第二颗雷。运行时出现了OSError,提示Cannot open resource,如图:

2.2.1 问题原因

出现这个错误的原因是在调用WordCloud模块时设置的字体,系统找不到,所以报出了Cannot open resource. 所以解决办法就有了,正确设置WordCloud模块使用的字体即可。

那问题来了,WordCloud模块调用的字体,要怎么设置、以及去哪里设置呢?

先来看看我们代码中设置词云参数的地方:

# 设置词云参数
w = wordcloud.WordCloud(
    # 设置字体 
    font_path = 'SIMYOU.TTF', 
    # 设置输出的图片宽高像素值
    width = 1000, height = 700,
    # 设置输出的图片背景色
    background_color = 'white')

这个SIMYOU.TTF就是字体的名称,它代表了幼圆字体。但是这个名称又是从哪里来的呢?

2.2.2 追根溯源

我们先来寻找下Windows系统的字体的位置,找找问题的“源头”。因为字体是系统级的东西,直接在系统盘检索一下,很容易找到答案。

打开Fonts文件夹看看,这里存放了windows系统已安装的所有字体,如下图:

我们在这个文件夹下仔细找寻一番,不难发现幼圆字体,但是它的名字为什么是SIMYOU.TTF,而不是SIMYOU.TTC呢?这里不再卖关子了,直接放大招。把幼圆Copy出来瞅瞅,你就明白了。

好了,我们知道了字体的源头,那就可以解决问题了。

2.2.3 解决方法一

从Windows字体目录中直接Copy出来一个字体,把字体名字填在配置词云参数中的font_path即可。

font_path = 'SIMYOU.TTF'

此时再运行代码,就不会出现OSError报错了。

2.2.4 解决方法二

其实与方法一是一个思路,只是不同的书写方式,如下:

即直接在font_path处填上Windows字体的绝对路径。

font_path = 'C:\\Windows\\Fonts\\SIMYOU.TTF', 

2.3 生成的词云出现乱码

解决了OS Error问题,并不代表生成的词云就没有问题了。如果你是对中文的材料制作词云,很容易踩上第三颗雷,如下图,是不是很绝望🤣🤣🤣

2.3.1 问题原因

出现上述方块乱码,不要怀疑是自己代码哪里出现了问题。这个问题原因很简单,只是由于你使用的字体不支持中文导致的。

2.3.2 从源头说起

我们还是先看看Windows字体这个文件夹,切换为列表显示方式

看到了没?这些字体都有自己对应的语言,不支持中文的当然不会给你正常显示的。我们直接下拉到列表的底部,我们要用到的字体都在这里。

2.3.3 解决方法

了解问题的根源之后,我们在这里直接挑选支持中文的字体来使用即可。

3 总结

好了,WordCloud在使用过程中遇到的雷,到此就排的差不多了,赶快去生成自己漂亮的词云图吧~!若在使用词云过程中还有遇到其它问题,欢迎留言出来!

备注:本篇首发于知识星球「人人都是Pythonista」。


文章作者: &娴敲棋子&
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 &娴敲棋子& !
评论
  目录