相信许多人都看到过下面这样的词云图,词云图是一种很好的视觉化工具,其作用主要是为了文字资料的视觉表示,既酷炫又能突出重点。

关于词云图的制作,网上能够搜集到很多的教程,许多都是利用了专用的工具,这些工具便捷又强大,但是它们普遍存在一个问题:功能太过专一,且适用范围有限。
今天我们要尝试的,是使用通用的程式语言python来制作词云。
python这门程式语言非常地简单易用,即使看起来很复杂的设定,python用一个库和几条程式码就能搞定了~
第一步:下载并安装AnacondaAnaconda官网,选择适合你电脑的版本,推荐下载使用python3.6版本,因为在最新的版本当中,许多python之前的语言缺陷都得到了解决。

下载完成后,跟一般的软件一样安装即可。安装好后在cmd中开启jupyter book,并新建一个目录。

第二步:分析文字生成词云词云分析的物件,是文字。理论上讲,文字可以是各种语言的。英文、中文、法文、阿拉伯文……
最近大家都在追权力的游戏,我就在wiki上面搜寻权力的游戏并将一些文字复制贴上,存入wordcloud的文本里。
wordcloud把词云当作一个物件,它可以将文字中词语出现的频率作为一个引数绘制词云,而词云的大小、颜色、形状等都是可以设定的。
生成一个漂亮的词云档案三步就可以完成。即:
1、配置物件引数
2、载入词云文字
3、输出词云档案 (如果不加说明预设的图片大小为400 * 200)
首先安装这个库:
pip install wordcloud
简单了解一下wordcloud库的一些方法:

开启jupyter,进行词云的绘制。
#读取词云文字
filename = "Game of Thrones.txt"
with open(filename) asf:
mytext = f.read
mytext

然后汇入词云库,利用mytext中储存的文字内容来制造词云。from wordcloud import WordCloud
wordcloud = WordCloud.generate(mytext)
这两句程式码执行没有任何的反应,但是此时词云分析已经完成了。制作词云的核心步骤只需要这2行语句,而且第一条还只是从扩充套件包里找外援。但是程式并不会给我们显示任何东西。
接下来我们需要python的一个强大库,matplotlib,执行下面的程式码,词云图就出来了。
%pylab inline
import matplotlib.pyplot as plt
plt.imshow(wordcloud, interpolation=\'bilinear\')
plt.axis("off")

丹尼真的是妥妥的大女主啊,临冬城的出现比例也很大。
完整程式码如下:
filename = "Game of Thrones.txt"
with open(filename) as f:
mytext = f.read
from wordcloud import WordCloud
wordcloud = WordCloud.generate(mytext)
%pylab inline
import matplotlib.pyplot as plt
plt.imshow(wordcloud, interpolation=\'bilinear\')
plt.axis("off")
以上就是利用wordcloud制作词云的方法,仅仅用了十行程式码就实现了哟~
第三步,自定义图片词云
上面的示例用的是英文文件,预设输出的词云图是长方形的,接下来我们要使用中文文件,然后实现输出有形状的图片。
这时仅仅使用wordcloud库没有办法实现我们的需求,我们还需要使用jieba和scipy两个库。
在生成词云的时候,Wordcloud预设是按照空格或者标点作为分割符来对目标文字进行分词处理。
若是英文文字可直接呼叫,若是中文文字,则需要先对文字进行分词处理然后用空格拼接,再呼叫wordcloud库函式。
jieba是实现中文分词的元件,它能够将句子精确的切开,适合做文字分析,还支援繁体分词、自定义词典等,关于jieba库的细则可以检视文件:
想要生成各种形状的图片,scipy库是必不可少的图片处理工具。
本次资料文件选用权力的游戏第八季百度百科分集剧情的前4集内容,将内容储存到一个txt文件中。
既然需要生成自定义的词云图片,那么还需要准备一张图片备用,建议使用纯色背景的图片,将图片储存后备用。
执行下面的程式码即可生成图片型的词云图:
#汇入wordcloud模组和matplotlib模组
from wordcloud import WordCloud,ImageColorGenerator
import matplotlib.pyplot as plt
from scipy.misc import imread
import jieba
#读取一个txt档案
text = open(r\'C:Users...权力的游戏.txt\',\'r\').read
#读入背景图片
bg_pic = imread(r\'C:Users....jfif\')
wordlist_after_jieba = jieba.cut(text, cut_all = True)
wl_space_split = " ".join(wordlist_after_jieba)
#生成词云
font = r\'C:WindowsFontssimfang.ttf\'
wc = WordCloud(mask=bg_pic,background_color=\'white\',font_path=font, scale=1.5).generate(wl_space_split)
image_colors = ImageColorGenerator(bg_pic)
#显示词云图片
plt.imshow(wc)
plt.axis(\'off\')
plt.show

往期推荐
有哪些你不知道的python小工具
99%的人都不知道的Python整理档案方法,效率提升100倍






























