
【Python】wordcloud 词云图
发布日期:2021-05-07 02:49:16
浏览次数:20
分类:精选文章
本文共 3251 字,大约阅读时间需要 10 分钟。
文章目录
一、词云图介绍
近年来,互联网、新媒体等行业报告中都会看到精美的词云图。它的原理主要是对文章内容进行分词,统计各个词出现的次数,然后根据出现的次数,设置显示样式,例如大小、颜色等,从而使读者快速领略文本的主旨。
Python中提供的 wordcloud库
可以快速生成词云图。但主要是针对英文
,通过空格进行分词
。比较流行的中文分词库为 jieba
可将其与 wordcloud库联合使用从而对中文文章生成相应的词云图。
二、环境配置
# -*- coding: utf-8# @Time : 2021/1/14 10:01# @Author : ZYX# @File : Test1.py# @software: PyCharmimport jieba # 中文解析import numpy as np # Numpyfrom PIL import Image # Image 加载读取图片import matplotlib.pyplot as plt # Matplotlib 绘图
如果通过Pycharm导入不了就通过pip~

三、WordCloud()解析及用法
♦ 参数
♑ font path
:字体路径,默认不支持中文,可通过该参数指定字体,支持OTF和TF格式;
width、 height
:画布的宽度和高度,单位为像素; ♑ margin
:文字之间的边距; ♑ mask
:指定图片的形状,忽略白色部分,通常为 ndarray ♑ max words
:最多显示的词的数量,默认为200; ♑ min font size
、 max font size:最小字体大小、最大字体大小; ♑ font_step
:字体大小增加步长,默认为1 ♑ background_ color
:词云图的背景颜色,默认为黑色 ♦ 方法
♑ generate(text)
:根据文本生成词云图,返回当前对象本身;
to image0
:将词云对象转化为图片; ♑ to_file(文件名)
:将词云对象转化为文件; ♑ to array()
:将词云对象转化为数组。 ♦ 基本步骤
♑ 创建wordcloud对象
,设定基本信息
调用generate()
方法生成词云
♑ 保存
或显示词云 四、基础案例展示
• 英文
- Python中提供的
wordcloud库
可以快速生成词云图。但主要是针对英文
,通过空格
进行分词。所以要对随机生成的文本内容按照空格进行join()拼接
。
# -*- coding: utf-8# @Time : 2021/1/14 10:01# @Author : ZYX# @File : Test1.py# @software: PyCharmimport randomimport wordcloud as wc# 1.创建对象world_cloud = wc.WordCloud()# 2.自定义文本# 随机生成选项里的文本100个res = random.choices(["Python","Java","PHP","Spark","Hadoop","C#","C++"],k=100)# 以空格拼接text = " ".join(res)# 3.生成词云world_cloud.generate(text)# 4.保存world_cloud.to_file(r"G:\Projects\pycharmeProject\Python_Sklearn\词云图\result\cloud2.png")
通过生成的随机文本和wordcloud绘制出的词云图如下所示:

• 中文
- 默认的wordcloud是对英文字符进行处理,若要显示中文,需要设定参数
font_path
,指定字体样式。
# -*- coding: utf-8# @Time : 2021/1/14 18:18# @Author : ZYX# @File : Test2.py# @software: PyCharmimport wordcloud as wcimport random# 1.创建对象 --- 指定中文样式word_cloud = wc.WordCloud(font_path="词云图/resource/msyh.ttc")m = random.choices(["江苏","山东","浙江","北京","上海","四川","湖北"],k=100)# 2.自定义文本text = " ".join(m)# 3.生成词云图word_cloud.generate(text)# 4.保存word_cloud.to_file(r"G:\Projects\pycharmeProject\Python_Sklearn\词云图\result\cloud_CN.png")
五、jieba库
-
jieba库分词的三种模式:
- (1)
精准模式
:把文本精准地分开,不存在冗余; - (2)
全模式
:把文中所有可能的词语都扫描出来,存在冗余; - (3)
搜索引擎模式
:在精准模式的基础上,再次对长词进行切分;
- (1)
-
主要函数:
jieba.cut(sentence,cut_all=False,hmM=true):
sentence表示需要分词的句子, cut_all表示是否采用全模式,HMM表示是否使用HMM(隐马尔可夫模型)模型;jieba. cut_for_search(sentence,HMM=true):
sentence表示需要分词的句子,HMM表示是否使用HMM模型,该方法适合用于搜索引擎构建倒排索引的分词,粒度比较细;jieba.cut()
方法和jieba.cut_for_search()
方法返回的结果都是可迭代对象,可使用for循环获取分词后得到的每一个词语,此外, jieba.lcut()和 jieba. lcut_for_search()效果分别和 jieba.cut()和 jieba.cut_for_search()效果类似,直接返回列表;add_word(word, freq=None,tag=None)
和del_word(word)
可在程序中动态修改词典;
简单应用一:读取文档生成词云图
简单应用二:生成带有形状的词云图
- mask:指定图片的形状,忽略白色部分,通常为 ndarray
- 通过读取图片获取图片形状的ndarry
# -*- coding: utf-8# @Time : 2021/1/14 19:06# @Author : ZYX# @File : Test4.py# @software: PyCharmimport jiebaimport numpy as npimport wordcloud as wcfrom PIL import Imageimport matplotlib.pyplot as plt# 1.读取文本数据、分词with open("./resource/洒满星星的河流.txt",'r',encoding="utf-8") as fp: context = fp.read()res = jieba.lcut(context)text = " ".join(res)# 2.读取图片信息mask = np.array(Image.open("./resource/pikaqiu.png"))# 3.创建词云图对象word_cloud = wc.WordCloud(font_path="./resource/msyh.ttc",mask=mask) # 这里可以设置背景颜色# 4.生成词云图word_cloud.generate(text)plt.imshow(word_cloud)plt.show()
发表评论
最新留言
第一次来,支持一个
[***.219.124.196]2025年03月24日 03时52分25秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
一个系统部署多个tomcat实例
2019-03-05
HP服务器设置iLO
2019-03-05
从头实现一个WPF条形图
2019-03-05
使用QT实现一个简单的登陆对话框(纯代码实现C++)
2019-03-05
QT :warning LNK4042: 对象被多次指定;已忽略多余的指定
2019-03-05
GLFW 源码 下载-编译-使用/GLAD配置
2019-03-05
针对单个网站的渗透思路
2019-03-05
Typescript 学习笔记六:接口
2019-03-05
02、MySQL—数据库基本操作
2019-03-05
OpenJDK1.8.0 源码解析————HashMap的实现(一)
2019-03-05
MySQL-时区导致的时间前后端不一致
2019-03-05
2021-04-05阅读小笔记:局部性原理
2019-03-05
go语言简单介绍,增强了解
2019-03-05
架构师入门:搭建基本的Eureka架构(从项目里抽取)
2019-03-05
MongoDB 快速扫盲贴
2019-03-05
one + two = 3
2019-03-05
sctf_2019_easy_heap
2019-03-06
PyQt5之音乐播放器
2019-03-06
Redis进阶实践之十八 使用管道模式提高Redis查询的速度
2019-03-06
SQL注入
2019-03-06