一、WordCloud库
Python中能把文本数据转换成漂亮词云图的神器——WordCloud。
1.词云图概念
词云图(Word Cloud)是一种将文本中高频词用不同大小字体展示的可视化方式。词语出现的频率越高,在词云图中显示的字体就越大。
这一特性可以使我们直观地了解一段文本的主要内容和关键词。
2.安装WordCloud
pip install wordcloud
此外,如果使用的是中文文本,还需要安装中文字体库jieba。
pip install jieba
二、快速上手
案例一:
from wordcloud import WordCloud
import jieba
# 准备文本
text = """Python是一门简单易学且功能强大的编程语言。Python的语法简洁优雅,代码可读性强。Python有丰富的第三方库,能够帮助程序员快速开发应用。"""
# 中文分词
cut_text = "".join(jieba.cut(text))
# 生成词云
wordcloud = WordCloud(
font_path='HYSongYunLangHeiW-1.ttf', # 指定中文字体
width=800,
height=400,
background_color='white'
)
wordcloud.generate(cut_text)
# 保存词云图
wordcloud.to_file('my_wordcloud.png')
运行结果如下图:
2.自定义词云样式
from wordcloud import WordCloud
import jieba
import numpy as np
from PIL import Image
# 读取背景图片(可选)
mask = np.array(Image.open('background.png'))
wordcloud = WordCloud(
font_path='simhei.ttf', # 字体路径
width=1000, # 图片宽度
height=600, # 图片高度
background_color='white', # 背景颜色
max_words=200, # 最大显示单词数
max_font_size=150, # 最大字体大小
min_font_size=10, # 最小字体大小
mask=mask, # 背景形状
colormap='viridis', # 颜色方案
random_state=42 # 随机种子,保证每次生成的图案相同
)
小贴士:colormap参数可以使用matplotlib提供的色彩方案,比如’viridis’、‘plasma’、'inferno’等。
3.高级技巧
1. 词频统计和权重设置# 创建词频字典
frequencies = {
'Python': 10,
'编程': 8,
'学习': 6,
'数据分析': 5
}
# 根据词频生成词云
wordcloud = WordCloud(font_path='simhei.ttf')
wordcloud.generate_from_frequencies(frequencies)
2. 去除停用词# 设置停用词
stopwords = set(['的', '了', '和', '是'])
wordcloud = WordCloud(
font_path='simhei.ttf',
stopwords=stopwords # 设置停用词
)
3. 自定义颜色from random import randint
def random_color_func(word=None, font_size=None, position=None,
orientation=None, **kwargs):
return f“hsl({randint(0, 360)}, 50%, 50%)”
wordcloud = WordCloud(
font_path='simhei.ttf',
color_func=random_color_func # 自定义颜色函数
)
4.实用小技巧
如果处理英文文本,可以不用设置font_path生成词云前最好对文本进行预处理,去除标点符号和特殊字符可以使用PIL库打开生成的词云图进行预览背景图片最好使用简单的剪影图片,效果会更好
5.常见问题解决
中文显示方框:检查font_path是否正确设置词云图太稀疏:尝试调整width和height参数词语重复:检查是否合理使用停用词配色不理想:尝试更换colormap或自定义color_func