用Python制作词云图

  • 何谓词云图?
    词云以词语为基本单元,根据词语在文本中出现的频率生成不同的大小,出现次数越多的,相应词语的大小就越大,因此看一个文本的词云图大致上可以了解该文本与什么相关。
  • 两个第三方库
    wordcloud库是专门用于文本生成词云的第三方库。
    jieba库能够将一段中文文本分割成中文词语的序列。
  • 库的安装
    打开命令提示符(cmd),命令如下:
:\>pip install wordcloud
:\>pip install jieba

:有时网速不好会出问题,显示read timed out(超时报错)
解决方式有两种:
①把Python的源设置成清华源
②设置超时时间

:\>pip --default-timeout=100 install -U jieba

开始写代码了,先新建一个文本文档,我使用的文件名是t,弄明白它的存储位置(此处是C:/Users/Administrator/Desktop/t.txt)写入需要分析的文本(此处使用的是白居易的《琵琶行》)。而后设计好要把词云图存储到哪个位置,方便查看。

import jieba
from wordcloud import WordCloud
f=open('C:/Users/Administrator/Desktop/t.txt',mode='r')  #打开文本文件,文件名为t
txt=f.read()  #读入文本文件
words=jieba.lcut(txt)  #精确分词
newtxt=''.join(words)  #空格拼接
wordcloud=WordCloud(font_path='c:\\windows\\Fonts\\simhei.ttf').generate(newtxt) #font_path指定字体文件的完整路径,默认为None,此处使用的是电脑自带字体
wordcloud.to_file('d:\\my first picture')#指定词云图存储到D盘,文件名为my first picture

这一段代码的运行结果是:

这时候就需要根据存储的位置去查看相关的词云图

用Python制作词云图_第1张图片
若要使词云图有形状并更加精细,则需要在上述代码中添加其他的参数和语句。
要找一个有形状的图片(一般不好找,所以自己制作)
①一张普通的图片,如下图:
用Python制作词云图_第2张图片
②用电脑自带图片编辑器打开它,该图片有些大,操作起来不太方便,可以调整一下图片大小,然后在“选择”的下拉框点击“自由图形选择”,然后开始选择,选择完毕后点击裁剪就可以了,如果要保留选择以外的部分,在裁剪前选择“反选”(仍在“选择”的下拉框中),裁剪后的图片如下:
用Python制作词云图_第3张图片
代码如下:

import jieba
from scipy.misc import imread  
from wordcloud import WordCloud
mask=imread('C:/Users/Administrator/Desktop/test.jpg')
f=open('C:/Users/Administrator/Desktop/t.txt',mode='r')
txt=f.read()
words=jieba.lcut(txt)
newtxt=''.join(words)
wordcloud=WordCloud(font_path='c:\\windows\\Fonts\\simhei.ttf',\
                    background_color='white',\  #图片背景颜色
                    width=800,\
                    height=600,\
                    max_words=200,\  #设置词云图中最大词数,默认为200
                    max_font_size=80,\ #设置词云最大字体号
                    mask=mask,\  #mask用于设置词云形状
                    ).generate(newtxt)  #由text文本生成词云
wordcloud.to_file('d:\\my second picture.png')

生成的词云图为:
用Python制作词云图_第4张图片

你可能感兴趣的:(Python,第三方库)