wordcloud库可以说是python非常优秀的词云展示第三方库。词云以词语为基本单位更加直观和艺术的展示文本,wordcloud库是基于numpy和pillow这两个内置库的。官网地址:wordcloud,github地址:word_cloud。
可以直接使用pip安装:
pip install wordcloud
我应该算是幸运的吧,我看网上一堆人都是说第一次装绝对会出错,我这次装虽然没有报错,但也有一堆warning,感觉报错的主流解法都是直接下载whl文件安装,如果安装出错的话这里推荐一个安装教程:wordcloud安装方法(Windows10)
我们可以通过wordcloud方法来生成我们的词云对象。我们在定义对象的时候也能生成我们的对象的参数定义:
除了上面这些参数,wordcloud还有一个特殊的参数,就是词云的形状,wordcloud的形状我们必须引入另外一个库imageio,通过imageio我们可以将目前的图片加载成元单元。
pip install imageio
引入完成后,我们可以设置词云的形状,参数为 mask
wordcloud的一些方法:
方法名 | 参数 | 返回值 | 备注 |
fit_words (frequencies) |
frequencies:dict from string to float | self | 根据单词及其频率生成词云 |
(frequencies, max_font_size=None) |
frequencies:dict from string to float max_font_size:int |
self | |
generate (text) |
text:string | self | 根据文本生成词云,是方法generate_from_text的别称。输入的文本应该是一个自然文本。若输入的是已排列好的单词,那么单词会出现两次,可以设置参数collocations=False去除此单词重复。调用process_text和genereate_from_frequences |
generate_from_text (text) |
text:string | self | |
process_text (text) |
text:string | words:dict (string, int) | 将一长段文本切片成单词,并去除stopwords。返回单词(words)和其出现次数的字典格式 |
|
random_state:RandomState, int, or None, default=None color_func:function or None, default=None colormap:string or matplotlib colormap, default=None |
self | |
to_array () |
image:nd-array size (width, height, 3) | 转换成numpy array | |
|
filename:string | self | 保存图片文件 |
需要注意的是,使用generate加载词云文本时,其中txt的内容需要以空格来分隔单词,并且对于英文单词而言,如果单词长度为1-2,系统会自动过滤。
效果如下:
import wordcloud, imageio
# 准备字符串
str = """If El Niños were dangerous before,they are looking to become especially destructive in the near future.
Already severe and unpredictable,recent research indicates these natural weather events are now swinging to even
greater extremes. Since humans started burning fossil fuels on an industrial scale,coral records from the past 7,
000 years indicate that heat waves,wildfires,droughts,flooding and violent storms associated with El Niño have grown
markedly worse. """
# 准备词云模板
mask = imageio.imread("wordcloud/template.png")
# 实例化一个wordcloud对象
wc = wordcloud.WordCloud(width=400, height=400, min_font_size=5, max_font_size=50, font_step=2, max_words=500, mask=mask)
# 加载词云文本
wc.generate(str)
# 输出图片
wc.to_file("wordcloud/word.png")
题目:wordcloud 是优秀的词云展示第三方库,它以以词语为基本单位,更加直观和艺术地展示文本,请根据附件文件(校长 2018.txt、校长 2018 毕业讲话.txt),分别绘制词云彩,可自行设定背
景或背景图片。
import wordcloud, imageio
# 准备字符串
f1 = open("校长2018.txt", "r+", encoding="utf-8")
f2 = open("校长2018毕业讲话.txt", "r+", encoding="utf-8")
text1 = f1.read()
text2 = f2.read()
# 准备词云模板
mask = imageio.imread("wordcloud/template.png")
# 实例化一个wordcloud对象
wc = wordcloud.WordCloud(width=400, height=400, min_font_size=5, max_font_size=50, font_step=2, max_words=500, mask=mask)
# 加载词云文本
wc.generate(text1 + text2)
# 输出图片
wc.to_file("wordcloud/word.png")
print(text1+text2)
f1.close()
f2.close()
我在运行的时候发现,没有报错,但结果却是这样的:
经过查阅资料后找到原因,wordcloud默认字体是DroidSansMono.ttf,这个字体不支持中文格式,因此需要更换字体,找到wordcloud.py文件,打开后更改: