一、词云简介

词云,也称为文本云或标签云。在词云图片中,关键词在文本中出现的次数越多,则表示该词越重要,其在词云中所占面积区域也越大,出现次数越少,所占面积越小。词云可任意更换背景为白色的图形以改变词云形状。

二、WordCloud原理简介

wordcloud的原理比较好理解,大致为:

  1. 首先对文本数据进行分词,使用process_text()方法
  2. 接着计算每个词在文本中的出现频率,生成一个字典。词频用于确定一个词的重要性,即词云文件中词语的显示大小。
  3. 然后根据词频的数值按比例生成一个图片的布局,类IntegralOccupancyMap 是该词云的数据可视化方式的核心。生成词的颜色、位置、方向等。
  4. 最后将词按对应的词频在词云画布上生成图片,核心方法是generate_from_frequencies,不论是generate()还是generate_from_text()都最终用到generate_from_frequencies
  5. 完成词云上各词的着色,默认是随机着色,通过调用to_file()完成词云文件的保存。

参考:https://www.cnblogs.com/jasonhaven/p/7596799.html?ivk_sa=1024320u

三、WordCloud参数

font_path 字体路径 string,如font_path='msyh.ttc'
mask 绘制的词云形状 nd-array/None,default=None,如果参数为空,则使用二维遮罩绘制词云。如果 mask 非空,设置的宽高值将被忽略,遮罩形状被mask取代。全白(#FFFFFF)的部分将不会绘制,其余部分会用于绘制词云。
width 画布宽度 int,default=400
height 画布高度 int,default=200
background_color 背景颜色 default="black",如background_color='white',背景颜色为白色
max_words 词的最大个数 number,default=200
stopwords 需要过滤掉的词 如果为空,则使用内置的stopwords
prefer_horizontal 单词水平方向排版出现频率 float,default=0.9,则词语垂直方向排版出现频率为 0.1
scale 按照比例进行放大画布 float,default=1,如设置为1.5,则长和宽都是原来画布的1.5倍
min_font_size 显示最小字体大小 default=4
max_font_size 显示最大字体大小 int/None,default=None
font_step 字体大小迭代步长 int,default=1,若步长大于1,会加快运算但是可能导致结果出现较大的误差
mode 背景 string,default="RGB",当参数为"RGBA"并且background_color为None时,背景为透明
relative_scaling 单词频率对其字体大小的权重 float,一般设置为0.5
color_func 颜色函数 default=None
regexp 使用正则表达式分隔输入的文本 string or None (optional),默认为 r"\w[\w']+"
random_state 每个单词返回一个PIL颜色
collocations 是否包括二元词组 bool, default=True
colormap 对每个词随机分配颜色 default="viridis",若指定color_func,则忽略该方法
normalize_plurals 移除单词末尾的's' bool,default=True

四、使用步骤

安装相应的第三方库:

pip install wordcloudpip install jiebapip install matplotlib

因为wordcloud里的process_text函数是针对英文进行分词的,无法对中文更好地分词,只在各种标点符号中切分中文,显然这并不是我们想要的效果,所以我们若要生成中文的词云,需要先对中文文本进行分词再调用相应的函数。 分词操作: 通过jieba分词,用空格拼接词语字符串,process_text函数就能返回正确的分词计数的字典。

五、python代码

1、基础词云,参考代码如下:

import jieba
from wordcloud import WordCloud
import matplotlib.pyplot as plttext = '用python制作词云,生成词云图片,只用10行python代码生成词云'
cut_word = " ".join(jieba.cut(text))wc = WordCloud(font_path = r'/msyh.ttc')
wc.generate(cut_word)plt.imshow(wc)
plt.axis("off") # 不显示坐标轴
plt.show()

词云展示:

备注:增加停用词处理,效果会更好,可参考以下形状词云代码。

2、形状词云,参考代码如下:

import jieba
from wordcloud import WordCloud
import matplotlib.pyplot as plt
import numpy as np
from PIL import Image# 读取文本
with open("./data/sentences.txt",encoding="utf-8") as f:
sentence = f.read()
print(sentence)
sentence_cut = jieba.lcut(sentence) # 生成分词列表
text = ' '.join(sentence_cut) # 以空格连接字符串#获取停用词 去掉不需要显示的词
stopwords_path = 'data/stopwords.txt'
stopwords = [line.strip() for line in open(stopwords_path,'r',encoding='utf-8').readlines()]# 读入背景图片
img = Image.open("./monkey2.jpg") # 打开遮罩图片
mask = np.array(img) #将图片转换为数组wc = WordCloud(font_path="msyh.ttc",mask=mask,width = 1000,height = 700,background_color='white',max_words=200,stopwords=sentence).generate(text)# 以下代码显示图片
plt.imshow(wc, interpolation='bilinear')# 用plt显示图片
plt.axis("off") # 不显示坐标轴
plt.show()
# wc.to_file("wordcloud2.png") # 保存为本地图片

注意:调用generate和generate_from_text两种方法一样,最终都是会调用generate_from_text方法。

使用的形状原图:

​​​​​​​

词云生成结果:

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/kerry_55/article/details/122090231

python 10行代码生成词云图片(基础词云、形状词云)相关推荐

  1. python词云图代码示例 无jieba_【词云图】如何用python的第三方库jieba和wordcloud画词云图...

    一直想学一下如何用python画词云图,觉得很好玩,本文就写一下我自己的一些尝试. 1.提前准备 一般准备以下四样就可以啦. 第一,电脑安装python,我装的是3.6. 第二,安装第三方库jieba ...

  2. python生成词云很慢吗_词云制作没那么难,Python 10 行代码就实现了!

    写在前面 想必大家有一个问题.什么是词云呢? 词云又叫名字云,是对文本数据中出现频率较高的"关键词"在视觉上的突出呈现,形成关键词的渲染形成类似云一样的彩色图片,从而一眼就可以领略 ...

  3. 三国演义词云的python代码_词云制作没那么难,Python 10 行代码就实现了!

    写在前面 想必大家有一个问题.什么是词云呢? 词云又叫名字云,是对文本数据中出现频率较高的"关键词"在视觉上的突出呈现,形成关键词的渲染形成类似云一样的彩色图片,从而一眼就可以领略 ...

  4. python生成词云_词云制作没那么难,Python 10 行代码就实现了!

    欢迎点击右上角关注小编,除了分享技术文章之外还有很多福利,私信"学习资料"可以领取包括不限于Python实战演练.PDF电子文档.面试集锦.学习资料等. 写在前面 想必大家有一个问 ...

  5. python 可以用excel做词云图嘛_word_cloud-用Python之作个性化词云图

    原标题:word_cloud-用Python之作个性化词云图 欢迎关注天善智能 hellobi.com,我们是专注于商业智能BI,大数据,数据分析领域的垂直社区,学习.问答.求职,一站式搞定! 对商业 ...

  6. Python 10 行以内代码能有什么高端操作?| 原力计划

    作者 | ZackSock 来源 | CSDN博客 Python凭借其简洁的代码,赢得了许多开发者的喜爱.因此也就促使了更多开发者用Python开发新的模块,从而形成良性循环,Python可以凭借更加 ...

  7. 请用python代码表示什么_深度解析什么是二维码?用Python 5行代码生成个性二维码...

    二维码满天飞, 随便扫一扫就能扫到不一样的内容. 有没有好奇什么是二维码? 又是怎么生成的呢? 今天我们就用python 5行代码 生成一个二维码,并且是个性的二维码,想你所想的,先看效果图,准备好微 ...

  8. Python 5行代码生成个性二维码,要不要试一下?

    二维码满天飞, 随便扫一扫就能扫到不一样的内容. 有没有好奇什么是二维码? 又是怎么生成的呢? 今天我们就用python 5行代码 生成一个二维码,并且是个性的二维码,想你所想的,先看效果图,准备好微 ...

  9. [Python]*词云图生成——默认和图片蒙版词云图

    1.生成默认画布词云图 : import wordcloud as wc #导入词云库 import jieba #jieba中文分词库 import matplotlib.pyplot as plt ...

最新文章

  1. C++11特性(模板类 initializer_list)
  2. Python编程:Tkinter图形界面设计(2)
  3. -32767转化为二进制_程序员需要了解的硬核知识之二进制
  4. wsl ubuntu 版本_让Ubuntu滚动更新
  5. Swift之深入解析“泛型”的底层原理
  6. C语言 线性表的链式存储结构(链表实现)
  7. 漫步数学分析六——聚点
  8. 安装配置mac版_全面战争三国 Mac版Mod安装指南
  9. Docker 系列之 常用镜像
  10. 网络安全设备Bypass功能分析
  11. python雨课堂课后答案_有没有免费查网课雨课堂答案的公众号或者软件啥的
  12. 最简单的RC振荡电路图大全
  13. 哆啦A梦:基于Prometheus的企业监控报警平台
  14. 实践三 网络嗅探与协议分析
  15. 服务器信号灯一直闪烁,光猫的光信号灯一直闪红灯
  16. JavaScript效率PK——统计特定字符在字符串中出现的次数
  17. 路由-策略Policy(路由重分发、路由过滤、路由策略)
  18. 联想st510开卡软件_固态硬盘修复(慧荣sm2246XT主控开卡教程)
  19. uni-app 商城 的sku算法(vue)
  20. SpringSecurity(二)、权限项目框架搭建

热门文章

  1. windows下对python的pip更新到最新版本
  2. 超全面!用户生命周期分析攻略
  3. 在Mac中使用OpenNI
  4. 高速PCB损耗性能的影响分析
  5. 电缆的差分特性阻抗(120欧姆)及插入损耗的测量方法
  6. 计算机一级考试试题excel,计算机一级考试模拟题(word、excel、ppt以及基础知识);...
  7. KVM+WebVirtMgr部署安装笔记
  8. Mathematica中用有限元方法解不规则区域上的波动方程
  9. C语言入门基础知识【完整版】
  10. 文本匹配与ESIM模型详解