wordcloud 包是一个用于根据文本数据生成词云图的强大工具,词云图是一种直观的可视化方式,它将文本中出现频率高的词以更大的字号、更醒目的颜色展示出来,而低频词则显示得较小,从而让用户能快速抓住文本的核心主题。

安装
你需要安装这个包,最简单的方式是使用 pip:
pip install wordcloud
重要提示:
wordcloud 包依赖于一些图像处理库,主要是 Pillow 和 numpy,在安装 wordcloud 时,通常会自动安装这些依赖,但如果遇到问题,你可能需要手动安装它们:
pip install numpy matplotlib pillow
matplotlib 也通常被推荐安装,因为它常用于显示生成的词云图。
基本使用
下面是一个最简单的 "Hello, World!" 示例,展示如何生成一个词云。

步骤 1: 准备文本数据
你可以使用任何字符串作为输入。
text = """ Python is an interpreted, high-level and general-purpose programming language. Python's design philosophy emphasizes code readability with its notable use of significant indentation. Its language constructs and object-oriented approach aim to help programmers write clear, logical code for small and large-scale projects. Python is dynamically-typed and garbage-collected. It supports multiple programming paradigms, including structured (particularly procedural), object-oriented and functional programming. """
步骤 2: 创建 WordCloud 对象并生成词云
from wordcloud import WordCloud
import matplotlib.pyplot as plt
# 创建一个 WordCloud 对象
# 你可以在这里设置各种参数,比如背景色、最大词数、字体大小等
wordcloud = WordCloud(width=800, height=400, background_color='white').generate(text)
# 使用 matplotlib 显示生成的词云图
plt.figure(figsize=(10, 5))
plt.imshow(wordcloud, interpolation='bilinear')
plt.axis("off") # 关闭坐标轴
plt.show()
运行这段代码,你就能看到一个基于你提供文本的词云图。
核心参数详解
WordCloud 类的构造函数有很多参数,通过调整它们可以定制词云的外观。
| 参数名 | 描述 | 示例 |
|---|---|---|
width |
词云图像的宽度(像素) | width=800 |
height |
词云图像的高度(像素) | height=400 |
background_color |
背景颜色 | background_color='white' 或 background_color='#FFFFFF' |
max_words |
显示的最大单词数量 | max_words=100 |
stopwords |
停用词列表,这些词将被忽略,可以是集合或列表。 | stopwords={'python', 'is'} |
mask |
一个形状掩码,传入一个图片路径或 numpy 数组,词云将根据此形状生成。 | mask=np.array(Image.open('shape.png')) |
colormap |
词语的颜色方案,可以使用 matplotlib 的颜色名称或字符串。 | colormap='viridis' 或 colormap='autumn' |
max_font_size |
最大字体大小 | max_font_size=60 |
min_font_size |
最小字体大小 | min_font_size=10 |
font_path |
指定一个字体文件的路径(对于中文支持至关重要) | font_path='simhei.ttf' |
contour_width, contour_color |
词云轮廓的宽度和颜色 | contour_width=1, contour_color='steelblue' |
高级用法示例
示例 1: 使用停用词
像 "the", "a", "is", "in" 这样的词没有实际意义,应该被过滤掉。

from wordcloud import WordCloud, STOPWORDS
# 默认的英文停用词
stopwords = set(STOPWORDS)
# 你也可以添加自己的停用词
stopwords.add("python") # 假设我们不希望 "python" 出现在词云中
wordcloud = WordCloud(stopwords=stopwords, background_color='white').generate(text)
plt.imshow(wordcloud, interpolation='bilinear')
plt.axis("off")
plt.show()
示例 2: 使用自定义形状
你可以使用一张图片作为词云的模板。
import numpy as np
from PIL import Image
from wordcloud import WordCloud
import matplotlib.pyplot as plt
# 1. 准备文本
text = "Python Java C++ JavaScript Go Rust PHP Swift Kotlin"
# 2. 加载形状图片
mask_image = np.array(Image.open("path/to/your/shape.png")) # 一个心形或圆形的图片
# 3. 生成词云
wordcloud = WordCloud(mask=mask_image, background_color="white", contour_width=3, contour_color='steelblue').generate(text)
# 4. 显示
plt.figure(figsize=(10, 10))
plt.imshow(wordcloud, interpolation='bilinear')
plt.axis("off")
plt.show()
注意:形状图片最好是背景为白色、前景为黑色的图片,这样效果最好。
示例 3: 中文词云处理
处理中文有一个关键问题:分词。wordcloud 本身不提供分词功能,你需要先对中文文本进行分词,然后将分词后的结果(通常是空格或特定符号连接的字符串)传给它。
-
安装分词库:最常用的是
jieba。pip install jieba
-
使用
jieba进行分词并生成词云
import jieba
from wordcloud import WordCloud
import matplotlib.pyplot as plt
# 1. 准备中文文本
chinese_text = """
Python是一种广泛使用的高级编程语言,以其简洁清晰的语法而著称,它支持多种编程范式,
包括面向对象、命令式、函数式和过程式编程,Python的动态类型系统和垃圾回收功能,
使得开发者能够更专注于解决问题,而不是底层细节,Python拥有庞大的标准库和活跃的社区,
被广泛应用于Web开发、数据科学、人工智能、自动化脚本等领域。
"""
# 2. 使用 jieba 进行分词
# 将分词结果用空格连接成一个字符串
words = " ".join(jieba.cut(chinese_text))
# 3. (重要) 指定中文字体路径
# 你需要下载一个中文字体文件(如 simhei.ttf, simsun.ttc 等)并指定其路径
# Windows 系统通常在 C:/Windows/Fonts/ 目录下可以找到
font_path = "C:/Windows/Fonts/simhei.ttf" # 请替换为你系统上实际存在的字体路径
# 4. 生成词云
wordcloud = WordCloud(
font_path=font_path, # 必须指定,否则无法正确显示中文
width=800,
height=400,
background_color='white',
max_words=50
).generate(words)
# 5. 显示
plt.imshow(wordcloud, interpolation='bilinear')
plt.axis("off")
plt.show()
保存词云图
你可以将生成的词云图保存为图片文件。
# ... 在生成 wordcloud 对象之后 ...
# 保存为 PNG 图片
wordcloud.to_file("my_wordcloud.png")
# 保存为 JPEG 图片
# wordcloud.to_file("my_wordcloud.jpg")
wordcloud 包是进行文本数据可视化非常方便的工具,它的核心流程很简单:
- 获取文本:从文件、数据库或网络获取原始文本。
- 预处理文本(可选但重要):如分词(中文)、去除停用词、转换大小写等。
- 创建
WordCloud对象:根据需求配置参数。 - 生成词云:调用
.generate()方法。 - 展示或保存:使用
matplotlib展示,或使用.to_file()保存。
对于中文用户,请务必记住 jieba 分词 和 font_path 指定字体 这两个关键点。
