# -*- coding: utf-8 -*-
# 引入库
from wordcloud import WordCloud
import jieba
import os
path = os.path.abspath('./word_cloud') # 指定文件路径
font = r'C:\\Windows\\fonts\\SimHei.ttf' # 指定字体,中文词云需要设置字体
一、准备文本
# 准备文本
f = open(path+'/test.txt', encoding='UTF-8') # 打开文件
txt_data = f.read() # 读取文件
f.close() # 关闭文件
f_word = jieba.cut(txt_data) # 分词
f_word_split = " ".join(f_word) # 拼接
二、创建词云
w = WordCloud(font_path=font) # 创建对象
w.generate(f_word_split) # 加载文本
w.to_file(path+'/test.png') # 输出图片

三、wordcloud 库说明
制作词云基本步骤分三步:
1、创建对象,配置参数(w = WordCloud('''设置参数''') )
2、加载词云文本
3、输出词云文件
1、WordCloud() 参数及意义
| 参数名称 | 数值类型 | 默认值 | 参数说明 |
| width | int | 400 | 输出的画布宽度,默认400像素 |
| height | int | 200 | 输出的画布高度,默认200像素 |
| font_path | string | None | 字体路径 |
| prefer_horizontal | float | 0.9 | 单词水平排列出现的频率,(垂直方向出现频率为0.1) |
| scale | float | 1 | 缩放比例,如值为2.0,则长和宽都为原画布的2倍 |
| max_font_size | int | None | 显示的最大的字体大小 |
| min_font_size | int | 4 | 显示的最小的字体大小 |
| font_step | int | 1 | 字体步长,如果大于1,会加快运算但可能导致结果误差较大 |
| max_words | number | 200 | 显示的词的最大个数 |
| relative_scaling | float | 0.5 | 词频和字体大小的关联性 |
| stopwords | set of strings | STOPWORDS | 设置屏蔽词,默认使用内置 |
| background_color | colorvalue | "black" | 背景颜色 |
| mode | string | ”RGB” | 当参数为“RGBA”且background_color不为空时,背景为透明 |
| random_state | int | None | 为每个单词返回一个PIL颜色 |
| regexp | string | None(optional) | 使用正则表达式分隔输入的文本 |
| collocations | bool | True | 是否包括两个词的搭配 |
| color_func | callable | None | 生成新颜色的函数,默认为空使用self.color_func |
| colormap | string | ”viridis” | 给每个单词随机分配颜色,若指定color_func,忽略该方法 |
| mask | ndarray | None | 默认使用二维遮罩绘制词云。如果设置mask,则画布宽高值被忽略,遮罩形状被mask取代。除全白(#FFFFFF)的部分不绘制,其余部分会用于绘制词云。 如: my_img=np.array(Image.open(path+'/test.jpg')),mask=my_img |
2、wordcloud 的常规方法
| 方法 | 描述 |
| w.generate(txt) | 向WordCloud对象w中加载文本txt |
| w.to_file(filename) | 将词云输出为图像文件,.png或.jpg格式 |
四、示例:
# -*- coding: utf-8 -*-
from wordcloud import WordCloud
from PIL import Image
import jieba
import matplotlib.pyplot as plt
import numpy as np
import os
path = os.path.abspath('./word_cloud')
font = r'C:\\Windows\\fonts\\SimHei.ttf'
def my_cloud():
with open(path+'/test.txt', encoding='UTF-8') as f:
f_txt = f.read()
f.close()
f_txt_buff = jieba.cut(f_txt)
f_txt_split = " ".join(f_txt_buff)
my_img = np.array(Image.open(path+'/elephant.jpg'))
w = WordCloud(font_path=font, mask=my_img, stopwords=None, max_font_size=50)
w.generate(f_txt_split)
w.to_file(path+'/elephant_word.jpg')
return
if __name__ == '__main__':
my_cloud()


END
本文详细介绍如何使用Python的wordcloud库生成词云,包括文本预处理、词云对象创建、参数配置及图片输出等步骤。同时,提供了丰富的参数说明和示例代码,帮助读者快速掌握词云制作技巧。
488

被折叠的 条评论
为什么被折叠?



