1
所需模块
jieba: 中文分词库
pillow: 用于处理图像的Python库
wordcloud: 词云图模块
matplotlib: 用于绘制图表和可视化
numpy: 用于科学计算和数值操作的Python库
2
模块安装
pip3.7 install wordcloud
pip3.7 install pillow
pip3.7 install matplotlib
pip3.7 install jieba
pip3.7 install numpy
一般报错情况下, 可以通过升级包解决 pip3.7 install -U 包名
3
本地测试版本
numpy 1.19.4
jieba 0.42.1
matplotlib 3.5.3
wordcloud 1.9.2
Pillow 9.5.0
4
源码
废话就不说了, 直接上源码, 把源码简单的封装了一下, 可以直接CV使用
# -*- coding: utf-8 -*-
# @Author: Mehaei
# @Date: 2023-08-29 20:23:38
# @Last Modified by: Mehaei
# @Last Modified time: 2023-08-30 20:31:54
# 导入需要使用的模块
import matplotlib.pyplot as plt
import jieba
import wordcloud
from wordcloud import ImageColorGenerator
import numpy as np
from PIL import Image
class genCordCloudPic(object):
"""
生成词云图类
"""
def __init__(self, ftext, fbg=None, fsave="wordcloud.png"):
"""
:param ftext: 文本文件路径
:param fbg: 背景图片路径
:param fsave: 词云图片保存路径
"""
self.ftext = ftext
self.fbg = fbg
self.fsave = fsave
def getWord(self):
"""
读取文本文件
"""
with open(self.ftext, 'r+') as f:
text = f.read()
cut_text = jieba.cut(text)
return ' '.join(cut_text)
def save_pic(self, use_bg_color=False, **wordcloud_kwargs):
"""
保存词云图
:param use_bg_color: 使用背景图片颜色渲染词云图的颜色
"""
word = self.getWord()
if not word:
raise ValueError("分词结果为空")
if not self.fbg:
raise ValueError("背景图片为空")
pic = np.array(Image.open(self.fbg))
# 生成图片颜色中的颜色
image_colors = ImageColorGenerator(pic)
wd = wordcloud.WordCloud(
mask=pic,
font_path='97txj03p17q39w692ecpjely52o1v6z9.ttf',
background_color='white',
max_font_size=100,
scale=2,
max_words=500,
**wordcloud_kwargs
).generate(word)
if use_bg_color:
wd.recolor(color_func=image_colors)
plt.imshow(wd, interpolation='bilinear')
# 关闭显示x轴、y轴下标
plt.axis('off')
plt.show()
wd.to_file(self.fsave)
5
使用方法
# 生成随机颜色的图片
# gccp = genCordCloudPic("text.txt", "goutou.png", "random_color.png")
# gccp.save_pic()
# 生成与背景图片颜色一致的图片
gccp = genCordCloudPic("text.txt", "goutou.png", "bg_color.png")
gccp.save_pic(use_bg_color=True)
6
效果图
背景图片
随机颜色词云图
使用背景图片颜色的词云图
注意: 应尽量使用白色背景的图片, 当生成的词云图不协调时, 可以调整字体大小或词语个数 等参数来优化词云图, 使用中文做词云图时, 应指定字体文件, 否则会出现方格的情况
7
其它常用参数
wordcloud.WordCloud 类是用于生成词云图像的主要类常用参数及示例
1. width 和 height: 指定生成词云的图像宽度和高度。
示例: WordCloud(width=800, height=400)
2. background_color: 指定词云的背景颜色。
示例: WordCloud(background_color='white')
3. mask: 用于指定词云的形状,可以是一个图像或图像的路径。
示例: WordCloud(mask=mask_image)
4. font_path: 指定生成词云时使用的字体文件路径,用于显示中文字符。
示例: WordCloud(font_path='your_font_file.ttf')
5. max_words: 指定最大显示的单词数量。
示例: WordCloud(max_words=100)
6. stopwords: 设置要过滤的停用词列表,这些词不会在词云中显示。
示例: WordCloud(stopwords=['and', 'the', 'in'])
7. collocations: 是否考虑词组搭配,默认为 True。
示例: WordCloud(collocations=False)
8. prefer_horizontal: 设置词云中词语的方向,True 为水平,False 为垂直。
示例: WordCloud(prefer_horizontal=True)
9. minfontsize 和 maxfontsize: 设置词云中单词的最小和最大字体大小。
示例: WordCloud(min_font_size=10, max_font_size=50)
10. background_color: 设置词云图像的背景颜色。
示例: WordCloud(background_color='white')
11. random_state: 设置随机种子,保证每次生成的词云图像是一致的。
示例: WordCloud(random_state=42)
更多参数, 参考官方文档
https://amueller.github.io/word_cloud/generated/wordcloud.WordCloud.html#wordcloud.WordCloud
8
完整项目地址
https://github.com/Mehaei/wordcloud
扫码关注腾讯云开发者
领取腾讯云代金券
Copyright © 2013 - 2025 Tencent Cloud. All Rights Reserved. 腾讯云 版权所有
深圳市腾讯计算机系统有限公司 ICP备案/许可证号:粤B2-20090059 深公网安备号 44030502008569
腾讯云计算(北京)有限责任公司 京ICP证150476号 | 京ICP备11018762号 | 京公网安备号11010802020287
Copyright © 2013 - 2025 Tencent Cloud.
All Rights Reserved. 腾讯云 版权所有