WordCloud词云库快速入门(一)

WordCloud简介

wordcloud是优秀的词云展示第三方库,以词语为基本单位,通过图形可视化的方式,更加直观和艺术的展示文本。

安装

代码语言:javascript
复制
pip install wordcloud#安装

绘制一个超级简单的词云

代码语言:javascript
复制
import wordcloud
c=wordcloud.WordCloud()#1.配置对象参数
wenzi = "He is busy every day. He has many thing to do. He has no time to go home for lunch. He gets home at 7:00 p.m. At home he does the housework. He cooks nice dishes for mother and me."
c.generate(wenzi) #2.加载词云文本
c.to_file("pywordcloud.png")#3.输出词云文件

参数

他是默认输出,看起来有点丑,我们把背景换成白色试试

代码语言:javascript
复制
import wordcloud
c = wordcloud.WordCloud(background_color='white')#1.配置对象参数,背景色换为白色
wenzi = "He is busy every day. He has many thing to do. He has no time to go home for lunch. He gets home at 7:00 p.m. At home he does the housework. He cooks nice dishes for mother and me."
c.generate(wenzi)  #2.加载词云文本
c.to_file("pywordcloud.png")#3.输出词云文件

可以看出,我们能通过更改参数来控制WordCloud绘制的词云,以下是常用的参数

fontpath:字符型,用于传入本地特定字体文件的路径(ttf或otf文件)从而影响词云图的字体族

width:int型,用于控制词云图画布宽度,默认为400

height:int型,用于控制词云图画布高度,默认为200

prefer_horizontal:float型,控制所有水平显示的文字相对于竖直显示文字的比例,越小则词云图中竖直显示的文字越多

mask:传入蒙版图像矩阵,使得词云的分布与传入的蒙版图像一致

contour:float型,当mask不为None时,contour参数决定了蒙版图像轮廓线的显示宽度,默认为0即不显示轮廓线

contour_color:设置蒙版轮廓线的颜色,默认为’black’

scale:当画布长宽固定时,按照比例进行放大画布,如scale设置为1.5,则长和宽都是原来画布的1.5倍

min_font_size:int型,控制词云图中最小的词对应的字体大小,默认为4

max_font_size:int型,控制词云图中最大的词对应的字体大小,默认为200

max_words:int型,控制一张画布中最多绘制的词个数,默认为200

stopwords:控制绘图时忽略的停用词,即不绘制停用词中提及的词,默认为None,即调用自带的停用词表(仅限英文,中文需自己提供并传入)

background_color:控制词云图背景色,默认为’black’

mode:当设置为’RGBA’且background_color设置为None时,背景色变为透明,默认为’RGB’

relative_scaling:float型,控制词云图绘制字的字体大小与对应字词频的一致相关性,当设置为1时完全相关,当为0时完全不相关,默认为0.5

color_func:传入自定义调色盘函数,默认为None

colormap:对应matplotlib中的colormap调色盘,默认为viridis,这个参数与参数color_func互斥,当color_func有函数传入时本参数失效

repeat:bool型,控制是否允许一张词云图中出现重复词,默认为False即不允许重复词

random_state:控制随机数水平,传入某个固定的数字之后每一次绘图文字布局将不会改变

不同形状的词云

接下来,我们在这个词云的基础上添加一个五角星

利用PIL模块读取我们的五角星图片文件并转换为numpy数组,作为WordCloud的mask参数传入:

代码语言:javascript
复制
from PIL import Image
import numpy as np
ziyan_mask = np.array(Image.open(r'C:\Users\Administrator\Desktop\R-C.png'))#读取图片
c = wordcloud.WordCloud(background_color='white',mask = ziyan_mask)#1.配置对象参数,背景色换为白色
wenzi = "He is busy every day. He has many thing to do. He has no time to go home for lunch. He gets home at 7:00 p.m. At home he does the housework. He cooks nice dishes for mother and me."
c.generate(wenzi) #2.加载词云文本
c.to_file("pywordcloud.png")#3.输出词云文件

虽然有点丑,但大概就是这个意思~~~,,,明天见