简简单单wordcloud
你是否也在别人的PPT,报告中见过这样的图片:
感觉很高大上,很牛逼,而苦恼于不清楚怎么去制作,没关系,万能的Python帮你解决。
一.什么是词云
“词云”是对网络文本中出现频率较高的“关键词”予以视觉上的突出,形成“关键词云层”或“关键词渲染”,从而过滤掉大量的文本信息,使浏览网页者只要一眼扫过文本就可以领略文本的主旨。
词云”是数据可视化的一种形式。给出一段文本的关键词,根据关键词的出现频率而生成的一幅图像,人们只要扫一眼就能够明白文章主旨。
二.wordcloud模块带你玩转词云
(一)wordcloud简介与下载
wordcloud是优秀的词云展示第三方库,以词语为基本单位,通过图形可视化的方式,更加直观和艺术的展示文本。
下载的话正常使用pip install wordcloud
下载即可,用pip安装不了的见这篇文章:https://zhuanlan.zhihu.com/p/33507393
(二)wordcloud入门
首先从wordcloud库调用WordCloud方法:
1 | from wordcloud import WordCloud |
使用WordCloud方法创建一个wordcloud对象:
1 | wd=WordCloud() |
我们让鼠标停留在WordCloud方法上即可详细查看其内容,WordCloud方法需要的参数如下图:
下面我们介绍几个常用的参数:
1.height参数:生成词云图片的高度,默认为200;
2.width参数:生成词云图片的宽度,默认为400,可以和height参数一起使用
1 | width=400,height=400/1.618 |
将图片长宽比设置为黄金分割比;
3.background_color参数:背景颜色,这个想必不用我过多介绍,就是生成的词云图片的背景颜色,默认为黑色,我们可以设置background_color="white"
,将颜色设为白色;
4.repeat参数:表示单词是否可以重复出现,默认为False
设置前
1 | from wordcloud import WordCloud |
设置后
1 | from wordcloud import WordCloud |
但我们发现,如果直接这样设置的话生成的字云有一点太密了,这时候就需要下一个参数max_words;
5.max_words参数:词云的最大单词数,默认为200;
6.max_font_size参数:单词的最大字号,还一个min_font_size,是最小字号,默认为4;
7.font_path参数:尝试运行一下这段代码:
1 | from wordcloud import WordCloud |
发现会得到这样的结果:
发现所有的汉字都变成了方框,这是因为他默认的字体是英文的,不能识别汉字,这时候,我们就需要用font_path参数吧中文字体引进来了。
你电脑里下载好的字体在这里:
选择一个中文字体即可:
1 | from wordcloud import WordCloud |
8.colormap参数:词云单词的颜色,可以上https://matplotlib.org/stable/tutorials/colors/colormaps.html选择,如我设置colormap为winter:
1 | wd=WordCloud(font_path="C:\\Windows\\Fonts\\simsun.ttc",background_color="white",repeat=True,colormap='winter') |
结果为:
除此之外,还有各种各样的colormap可以选择
除此之外,也可以自制配色:
这种方法需要从图片中提取配色,例如我想用这张图片的配色:
1 | from wordcloud import ImageColorGenerator |
我们通过将图片转化为array数组来获取它的RGB三通道值,再用wordcloud自带的ImageColorGenerator函数将其转为配色,注意这时候就不能再用colormap参数了,这时候得使用color_func参数:
1 | from wordcloud import WordCloud |
结果图:
快用这种方法用你喜欢的配色来制作词云吧!!
9,mask参数:给词云生成轮廓用的参数,不需要做成轮廓的背景应为白色,如这是博主利用PS做的一张图片:
将图片转化为array数组的形式,传给mask参数:
1 | from wordcloud import WordCloud |
得到的结果图如下:
运行过程可能会有点慢,这是很正常的,注意如果要自定义配色和定义边框的话,两张图片的大小需要一致;
10.counter_width参数:我们注意到之前生成的图虽然有了边框,但只有一个大致的形状,想要把边框用直线画出来,就需要设置这个参数我们设置contour_width=3
,得到的结果为:
图片有了黑色的线条做边框,此外还可以用counter_color参数设置边框的颜色;
11.mode参数:mode参数默认为RGB通道,如果我们想设置词云背景为透明,需要将mode设置为RGBA,background_color设置为None,生成结果为背景透明图片:
这个黑色我也不知道为什么,注意wordcloud有个bug至今未修复,就是设置了透明背景就不能设置counter_width和color,因为通道个数不匹配。
此外wordcloud还有两个重要的函数generate和to_file,generate是以字符串为参数把字符串变成词云,而to_file函数顾名思义就是将生成的词云保存到本地,参数是一个字符串,表示到处结果的路径。