mylogo

退役程序员的茶室 RetiredCoder.cn

← 返回上一页

巧用Python 绘制词云(1)

2025-04-22 12:11:55

本系列文章是配合我发布的《巧用Python》系列视频教程的知识点总结和补充。

使用pip命令安装wordcloud库

安装Python后可以用pip命令安装所需要的库,例如为了生成词云,我们需要安装第三方库wordcloud。

pip install wordcloud

如果在系统上安装了多个不同版本的Python,可能需要使用不同的命令,例如我的机子上安装的Python3.9并不是系统默认的Python环境,因此安装时改用了pip3.9命令:

pip3.9 install wordcloud

安装成功后就可以在Python环境中引入库中所需的子库、类或定义好的常量等,例如在本节中引入了所需的类WordCloud,以及在词云中禁止出现的词列表STOPWORDS:

from wordcloud import WordCloud, STOPWORDS

定义WordCloud类的对象

在wordcloud API文档里给出了可以参考的类的结构信息,在定义对象时可供参考:

Image

通过看它们的名称,就大致能了解它可以改变那些词云图像的属性,例如字体大小的上下限max_font_size、min_font_size,包含词汇的最大数值max_words,禁止出现的词集stopwords,是否包含数字include_numbers,图像背景颜色background_color等等。例如视频中我们在定义类型为WordCloud的对象wc时,暂时先用到了其中两个属性background_color和stopwords:

wc =WordCloud(stopwords=sw, background_color='white')

其中sw是用set(STOPWORDS)定义的一个可以为原有的STOPWORDS列表添加新项的数据集,对于不希望显示的单词,可以直接用sw.add(“单词”)来添加进列表之中,如:

sw.add("Python")

定义wordcloud对象后,就可以调用这个对象的generate()方法生成词云了,它包含的参数就是词云中要显示内容的文本来源。

wc.generate(str)

这里的str是一个字符串类型的文本。

利用matplotlib库展示词云图像

为了在运行时可以展示图像内容,这里还用到了matplotlib库,它在Python数据可视化应用中运用广泛,可以用来绘制各种图表。这里只是简单的利用它显示词云图像:

plt.imshow(wc)plt.show()

注意,一些开发环境可能不用plt.show()就能直接显示出词云图像信息。但在我使用的Python IDLE里,还是需要这句让它弹出展示图像窗口。

另外,如果不需要显示坐标,调用plt的axis(),将其参数设置为off:

plt.imshow(wc)plt.axis("off")plt.show()

两种保存词云图像的方法

一种方法是,在弹出的窗口中,我们可以通过点击下面工具条中最右边的保存键直接将显示的内容保存为图像格式。

Image

另一种是通过调用WordCloud对象wc的方法to_file()来将词云图像保存,注意一点的是用plt设置是否显示坐标的设定不会对这种方式存储的词云图片造成任何影响,词云图片中不会出现plt的坐标系。

plt.imshow(wc)
plt.axis("off")
plt.show()
wc.to_file("mywordcloud.png")

to_file()中的参数直接给出图片名称,使用的是相对路径,将会保存在该程序存储的同级文件夹下。在运行上面的代码时,注意当程序执行到plt.show()时窗口弹出,wc.to_file(“mywordcloud.png”)并没有立即执行,而是需要关闭弹出的窗口后才会继续执行。

这种方式保存的图片如下:

Image

本节课完整代码:

from wordcloud import WordCloud, STOPWORDS
from matplotlib import pyplot as plt

str = """Python is an interpreted high-level general-purpose programming language. \
Python's design philosophy emphasizes code readability with its notable use of \
significant indentation. Its language constructs as well as its object-oriented \
approach aim to help programmers write clear, logical code for small and \
large-scale projects.\
[30]Python is dynamically-typed and garbage-collected. It supports multiple \
programming paradigms, including structured (particularly, procedural), object-oriented \
and functional programming. Python is often described as a "batteries included" \
language due to its comprehensive standard library.\
[31]Guido van Rossum began working on Python in the late 1980s, as a successor \
to the ABC programming language, and first released it in 1991 as Python 0.9.0.\
[32] Python 2.0 was released in 2000 and introduced new features, such as list \
comprehensions and a garbage collection system using reference counting. Python 3.0 \
was released in 2008 and was a major revision of the language that is not completely \
backward-compatible and much Python 2 code does not run unmodified on Python 3. \
Python 2 was discontinued with version 2.7.18 in 2020.\
[33]Python consistently ranks as one of the most popular programming languages."""

sw=set(STOPWORDS)
#sw.add("Python")

wc =WordCloud(stopwords=sw, background_color='white')
wc.generate(str)

plt.imshow(wc)
plt.axis("off")
plt.show()

wc.to_file("mywordcloud.png")