stylecloud:一款可以制作个性化词云图的 Python 神器

词云图可以让我们方便地识别出文本中的关键词,其中单词的大小代表它们的频率。有了这个,我们甚至在阅读之前就可以很好地了解文本的内容。

在本文中,我们将使用第三方 Python 库 stylecloud,有了该库,可以通过简短的几行代码来制作漂亮的词云图。本文来自技术群的小伙伴的分享,在此表示感谢。喜欢点赞、收藏、关注。

【注】文末可以加入我们的技术群

闲话少说,我们直接开始吧。

举例

接下来,我们将用来制作词云图的文本是偶像乔布斯在斯坦福大学演讲的一部分。文末链接可以获得对应的 .txt 文件,当然你也可以使用任何其他的文本来制作自己的词云图。

我们首先来安装stylecloud库,安装代码如下:

pip3 install stylecloud

接着我们可以使用_stylecloud.gen_stylecloud()_ 方法来生成词云图,通过传递相应的文本 .txt 文件的路径和生成词云的图标样式即可。

在此示例中,我选择了一个苹果作为图标。代码如下:

import stylecloud
stylecloud.gen_stylecloud(file_path='SJ-Speech.txt',icon_name="fas fa-apple-alt")

输出如下:

图片
上述代码运行后,在当前python文件目录下生成以png格式保存的词云图。

美化显示效果

仔细观察gen_stylecloud()函数的相关参数,我们可以控制背景颜色、单词的颜色、输出文件的名称等。为此,我们查看下面的代码:

stylecloud.gen_stylecloud(file_path='SJ-Speech.txt',
                          icon_name='fas fa-apple-alt',
                          colors='white',
                          background_color='black',
                          output_name='apple.png',
                          collocations=False)

运行结果如下:

图片

处理停用词

接着我们可以使用stop_words库来处理文本中的停用词,可以使用_pip install stop_words_来安装该库。

有了停用词列表,我们也可以将其传递给在_gen_stylecloud_ 函数中的_custom_stopwords_参数。

样例代码如下:

from stop_words import get_stop_words
stop_words = get_stop_words('english')
stylecloud.gen_stylecloud(file_path='SJ-Speech.txt',
                          icon_name='fas fa-apple-alt',
                         palette='cartocolors.qualitative.Pastel_3',
                          background_color='black',
                          output_name='apple.png',
                          collocations=False,
                          custom_stopwords=stop_words)

运行结果如下:

图片

使用自定义背景图像

在文末网站上有数百个免费图标可用于 stylecloud,但是但有时我们可能希望使用自己的图像来为创建更加个性化的词云图。此时,我们可以使用PIL库来读取图像,使用matplotlib来绘制我们的图像,使用wordcloud来制作对应的词云图。

下述代码中使用蝙蝠的图案来生成对应的词云图,代码如下:

from wordcloud import WordCloud, ImageColorGenerator
from PIL import Image
import matplotlib.pyplot as plt
import numpy as np
# create a mask based on the image we wish to include
my_mask = np.array(Image.open('batman-logo.png'))
# create a wordcloud
wc = WordCloud(background_color='white',
                   mask=my_mask,
                   collocations=False,
                   width=600,
                   height=300,
                   contour_width=3,
                   contour_color='black',
                   stopwords=stop_words)

with open('SJ-Speech.txt',encoding='gb18030',errors='ignore') as txt_file:
  texto = txt_file.read()
wc.generate(texto)
image_colors = ImageColorGenerator(my_mask)
wc.recolor(color_func=image_colors)

plt.figure(figsize=(20, 10))
plt.imshow(wc, interpolation='bilinear')
plt.axis('off')
wc.to_file('wordcloud2.png')
plt.show()

运行结果如下:

图片

参考

stylecloud github链接:

https://github.com/minimaxir/stylecloud

图标网站链接:

https://fontawesome.com/icons?d=gallery&p=1&m=free

总结

本文详细介绍了如何使用 stylecloud 库来绘制各种样式的词云图,以突出显示文本中相应的关键词,并给出了定制化改进显示效果的样例代码。

推荐文章

技术交流

欢迎转载、收藏、有所收获点赞支持一下!

在这里插入图片描述

目前开通了技术交流群,群友已超过2000人,添加时最好的备注方式为:来源+兴趣方向,方便找到志同道合的朋友

  • 方式①、发送如下图片至微信,长按识别,后台回复:加群;
  • 方式②、添加微信号:dkl88191,备注:来自CSDN+研究方法
  • 方式③、微信搜索公众号:Python学习与数据挖掘,后台回复:加群

长按关注

  • 2
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值