图1
各位读者朋友们大家好啊,前两天我在用Python进行数据可视化工作的时候,无意中发现了下面这种带特定形状的词云图(如图1所示),我相信很多读者和我的感受应该是一样的,当看到第一眼时,一定会被这种图的视觉效果所吸引。看过我之前“用Python制作动态排序图”的朋友应该知道,Python的可视化功能相当强大,因此,今天便为大家出一期《如何用Python作出特定形状词云图》的教程,我将以图2所示的最终效果为例,向大家展示其完整的实现过程。
图2

1.	基本思路

词云图,也叫文字云,是对文本中出现频率较高的“关键词”予以视觉化的展现,词云图过滤掉大量的低频低质的文本信息,使得浏览者只要一眼扫过文本就可领略文本的主旨。在这种图中,词的形状代表了词频,其尺寸越大,代表出现频率越高。其主要步骤如下:
1.1首先我们需要准备一份文本文件,也就是你想进行提取分析并展示的内容,因此第一步要对这些文本内容划分成词,也就是“分词”,这一步骤主要用到的第三方库是jieba库,其中最主要的函数是具有中文分词功能的函数lcut( ),正确的分词是基础。
1.2分词后,若想想生成特定形状的词云,需要先将背景图片导入进行图片展示,这个过程需要利用PIL库(注意PIL仅支持python2.7,若想支持Python 3.x 需要将名字变为Pillow库)中的Image.open( )函数将图片加载进来。需要完整代码文件的读者可以在公,众号:全哥的学习生涯,回复“词云图代码”获取;需要最新停词表的读者可以回复“停词表”获取。随后需要导入numpy库,利用其中np.array函数将图片转换为ndarray类型的数据。
1.3此时,就可以利用wordcloud中的Wordcloud( )函数根据分词结果生成词云了,并通过matplotlib库中的一系列函数进行展示。

2.	代码展示

在这里,我以图3中的txt格式的新年歌为例,向大家展示:
图3
代码如下:
#-*- coding:utf-8 -*- # Author:全哥的学习生涯 Time:2021/1/20 #导入需要的模块 import jieba import matplotlib.pyplot as plt from matplotlib import colors from wordcloud import WordCloud import numpy as np import os from PIL import Image #设置适合你的工作路径 os.chdir(r"这里填写你的工作路径") print(os.getcwd())
原始文件导入pycharm,去掉换行符和空格,并进行分词后的效果如图4所示。
#加载需要分析的文章text=open('1.txt',encoding="utf-8").read()print(text)#导入文本数据进行简单的文本处理,去掉换行符,半角和全角空格text=text.replace("\n","").replace("\u3000","").replace("\u0020","")print(text)#分词text_cut=jieba.lcut(text)#将分好的词用空格分隔开并连接成字符串text_cut=" ".join(text_cut)print(text_cut)
图4
此时可以利用wordcloud库及matplotlib库进行图片展示,每一行代码的解释见以下代码中的注释部分。