大家好,我是开源大叔。
今天给大家分享一个非常好用的行为词云图开源项目:wordcloud。
介绍
当我们看到一篇文章或者电子书的时候,想知道文章或书中主要内容,则可以采用词云图来处理。
词云图就是对文本中出现频率较高的关键词进行可视化的展现。接下来跟着大叔来看看怎么使用吧。
快速入门
在使用之前我们先安装一下 wordcloud
我们先来一个简单的例子,如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| import numpy as np import matplotlib.pyplot as plt from wordcloud import WordCloud
text = "Hello wordcloud"
x, y = np.ogrid[:300, :300]
mask = (x - 150) ** 2 + (y - 150) ** 2 > 130 ** 2 mask = 255 * mask.astype(int)
wc = WordCloud(background_color="white", repeat=True, mask=mask) wc.generate(text)
plt.axis("off") plt.imshow(wc, interpolation="bilinear") plt.show()
|
运行效果图如下:
上面展示了引文的词语,我们去试一下中文看看效果如何。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| d = path.dirname(__file__) if "__file__" in locals() else os.getcwd() text = open(path.join(d, 'info.txt')).read() alice_mask = np.array(Image.open(path.join(d, "file/alice_mask.png"))) stopwords = set(STOPWORDS) stopwords.add("said") wc = WordCloud(font_path="Hiragino Sans GB.ttc",background_color="white", max_words=2000, mask=alice_mask, stopwords=stopwords, contour_width=3, contour_color='steelblue') wc.generate(text) wc.to_file(path.join(d, "alice.png")) plt.imshow(wc, interpolation='bilinear') plt.axis("off") plt.figure() plt.imshow(alice_mask, cmap=plt.cm.gray, interpolation='bilinear') plt.axis("off") plt.show()
|
运行效果如下:
是不是看起来很酷,通过上面的介绍可以看出底图是可以随意调整的,可以换成自己喜欢的图片,但是有个问题需要注意,如果是中文的话,则需要指定字体 例如 Mac 中得到字体的信息:
找到 ttc 格式的字体文件 copy 到自己项目中就可以方便的使用啦。
大叔总结
上面大叔只是介绍了 wordcloud 的简单使用,在使用的时候还有其他的高级设置,大家可以试起来哦。