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」。