效果如下图:
1、jieba库
2、wordcloud库
3、PIL模块 (官方的图像处理库,必装)
4、numpy(数据处理库)
安装:
pip install jieba
jieba
模块是python中常用的分词模块,简单介绍它的作用:
结巴分词的分词模式分为三种:
【以下,都返回一个生成器`generator`】
# 全模式
jieba.cut(text, cut_all=True)
# 精确模式 (该模式是默认的模式,参数`cut_all=False`可不写)
jieba.cut(text, cut_all=False)
# 搜索引擎模式
jieba.cut_for_search(text)
参考文档资料如下:https://amueller.github.io/word_cloud/generated/wordcloud.WordCloud.html
安装:
pip install wordcloud
(一)wordcloud模块中有三个函数分别是:
① wordcloud.WordCloud()
# 【用于生成或者绘制词云的对象】
该函数携带多个参数,依次介绍如下:
wordcloud库
下的 DroidSansMono.ttf
字体)ps:如果选用默认字体的话,是不能够显示中文字的。为使得能够显示中文,可以自己设置字体。系统字体一般都在C:\Windows\Fonts
目录下。之前别人博客中提到的设置为STFANGSO.TTF
就是华文仿宋。选择自己想要设置的字体,然后右击属性,复制路径然后赋值给font_path即可。(如下图)mode=“RGBA”
且background_color=“None”
时,将生成透明的背景。color_func=lambda *args, **kwargs: "white" #所有字体为白色
# 或者通过设置RGB来解决.
color_func=lambda *args, **kwargs: (255,0,0) #所有字体颜色为红色
r"\w[\w']+"
。② wordcloud.ImageColorGenerator()
# 【基于彩色图像的颜色生成器】
wordcloud.ImageColorGenerator(image, default_color=None)
》根据RGB图像生成颜色。单词将使用彩色图像中包围的矩形的平均颜色进行着色。参数:image
用于生成单词颜色的图像。
》生成的对象用法:
color_func
参数。color_func
参数。③ wordcloud.random_color_func()
# 【随机色调颜色生成】
wordcloud.random_color_func(word=None, font_size=None, position=None, orientation=None, font_path=None, random_state=None)
》随机色调颜色生成。如果给定一个随机对象,则用于生成随机数
(二)wordcloud输出形式:
fit_words(frequencies)
# 根据词频生成词云generate(text)
# 根据文本生成词云generate_from_frequencies(frequencies[, ...])
# 根据词频生成词云generate_from_text(text)
# 根据文本生成词云process_text(text)
# 将长文本分词并去除屏蔽词(此处指英语,中文分词还是需要自己用别的库先行实现,使用上面的 fit_words(frequencies))recolor([random_state, color_func, colormap])
# 对现有输出重新着色。重新上色会比重新生成整个词云快很多to_array()
# 转化为 numpy arrayto_file(filename)
# 输出到文件from wordcloud import WordCloud # 导入词云库
from PIL import Image # 导入PIL图库
import jieba # 导入jieba分词库
import numpy as np # 导入数据处理库
def read_word(text_path):
with open(text_path, 'r', encoding="utf-8") as f:
cut_word = jieba.cut(f.read()) # 分词处理
result = " ".join(cut_word) # 分词后在单独个体之间加上空格
img = Image.open("timg.png") # 打开背景图片
img_array = np.array(img) # 设置词云形状
stop_words = ["说", "说道", "道", " "]
# 自定义词云
wc = WordCloud(
font_path=r"C:\Windows\Fonts\微软雅黑\msyh.ttc", # 设置字体样式(中文文字需要添加中文字体)
background_color="white", # 背景颜色(默认黑色背景,也是可以实现效果,但是不太漂亮)
mask=img_array, # 遮罩层,除白色背景外,其余图层全部绘制
scale=8, # 使用比例尺比设置画布尺寸
max_font_size=100,
repeat=False, # 去除重复词汇
stopwords=stop_words # 屏蔽词(list格式)
)
wc.generate_from_text(result)
wc.to_file("dan_mu.png") # 保存词云图
if __name__ == '__main__':
read_word("dan_mu.txt")
》本案例是接着 “爬b站弹幕” 的拓展部分,将弹幕信息生成词云图。弹幕爬虫可以访问下文链接:
https://blog.csdn.net/ytraister/article/details/107361218
》通过本文,可以了解到其他python库的用法,制作出好看的词云图海报。
》本文参考如下几个博客✍: