概述(多图预警)
主要是词云展示以及分享绘制词云过程中遇到的问题及解决方法
希望对以后学习词云的初学者有所帮助
————这里初学者一枚,请多多指教
一、Wordcloud库基础知识
——词云以词语为基本单位,更加直观和艺术地展示文本
——wordcloud库把词云当做一个WordCloud对象
——wordcloud.WordCloud()代表一个文本对应的词云
——可根据文本中词语出现的频率等参数绘制词云
——形状、尺寸、颜色包括字体都可以设定
基本思路
(1)分隔:以空格分隔单词
(2)统计:统计单词出现次数,并过滤不需要的单词
(3)w = wordcloud.WordCloud()生成一个词云对象,变量为w
(4)配置参数
min_font_size = 最小字号,默认4号
max_font_size = 最大字号,根据高度自动调节
font_step = 字体字号进步间隔,默认为1
font_path = " " 指定字体文件的路径,默认None (font_path = "msyh.ttc" 微软雅黑)
font_words = 词云显示的最大数量,默认200
stop_words = {} 词云的排除词列表,即不显示的单词列表(一般为集合类型{ })
mask = 指定词云形状,默认长方形。需引用imread()函数读取图片效果
background_color = " " 默认为黑色
(5)加载文件
w.generate(txt) 向w中加载文本txt
(6)输出文件
w.to_file(filename) 输出为图像文件, .png或 .jpg格式
二、【实例】
前期准备
1,pip install jieba, wordcloud
2,找一份文件,将其内容复制到一个文本文档。
我在学习资料中找了《**关于坚持和完善中国特色*制度 推进国家治理体系和治理能力现代化若干重大问题的决定》,并将上述文档命名为 "*工作报告.txt"。
3,找一张图读取词云效果
思路:读取文件、分词整理 -> 设置并输出词云 -> 观察效果,优化迭代
词云初始代码如下
但不幸出现ImportEorror
这是网上搜到的结果
于是代码变成了这样
可是,祸不单行。程序执行过程中,无法转成utf-8。
我秉着“不懂就要多问”的原则,去查了网上的资料
大概意思就是——windows系统的问题,转成gbk就好啦
看到别人家的修改地方了吧?
这是成品图初稿,和我预想的非常不一样(有点像派大星),于是我开始思考~
是不是字体的字号太小了?去掉多余小星星去掉水印,最大字号分别尝试过20、40、80
emmmmm更傻了
好吧。
可是我好像发现了,词云都是分部在五角星的线上,要不把星星填充一下?
数科院的女人说干就干!!!
留个小白牙~~~~~~~~ 可是词云也有小白牙?!
没办法,牙蓝了就蓝了吧
由此引发的问题:
为什么读取的词云图形是星星的边呢?
猜想:会不会是星星背景色和成果图背景色撞了?默认读取与成果图背景色不同的颜色?
更改成果图背景black~
本星星告诉你——其!实!不!是!的!(笑容逐渐凝固)
真相只有一个!谣言
imread函数读取了默认颜色(白色)之外的其他填充色(我没有证据,不知道对不对,就是瞎扯)
下次再好好研究
======================分割线=====================
现在我证明上面的问题引发的猜想全是谣言
在本文开头补充的基础知识中讲到,wordcloud默认背景色为黑色(上面谣言实锤)
新的谣言产生:
imread()函数读取图片的背景色,并将该颜色作为输出词云的背景色(该实例为白色)。而图片背景色之外的其他颜色则作为词云的填充部分。上面最后更改成果图背景其实是在前面词云成果图的基础上对背景颜色加以修改。
欢迎大家下方评论答疑解惑