本节内容:实现词云,将文本信息填充在特定的形状内部,处理得当的话会产生相当精美的图片。
官方教程链接地址:WordCloud for Python
github项目地址:word cloud GitHub
1. 相关模块安装:
安装WordCloud
windows系统:pip install wordcloud或者anaconda用户利用 conda install -c conda-forge wordcloud
安装matplotlib和numpy,类似上面的安装方法。
2. wordcloud函数参数信息,了解每个参数的实际效果。
font_path:string:可以修改生成词云的字体格式,传递字体的文件格式为OTF或者TTF,需要给出完整路径
width,height: int,默认为400,200,画布的大小,即生成分辨率为(400,200)的图片
prefer_horizontal:float,默认为0.9,代表文本横向排版出现的频率为0.9,垂直排版频率为0.1
mask:nd-array or None,默认为None,默认词云会填充画布默认大小,若不是None,则默认画布大小将失效,遮罩的形状被mask取代。mask中全白区域将不会绘制词云,所以导入图片时注意该图片的背景必须为白色,而填充区域为其他颜色,可以利用ps抠图放在纯白的画布中。
contour_width:float,设置词云边界宽度,默认为0,不画出词云边界线,当mask中填充部分的边界平滑时可以设置contour_width,否则不需要设置该参数,会产生锯齿。
contour_color:'black',边界线颜色,默认为黑色,当contour_width不为0时,设置本参数改变边界线颜色。
scale:float,默认为1,按比例放大(>1)画布或者缩小(<1)
min_font_size:int,默认为4,最小的字体大小
max_font_size:int or None,默认为None,字体的最大样式
font_step:int,默认为1,字体大小的步长,大于1时会加快运算,但可能会导致较大误差(以测试为准)
max_words:number,默认为200,显示单词或者汉字最大的个数
stopwords:为字符串集或者None,设置需要屏蔽的词(不会显示类似of the i etc.),若为None则会使用内置词集
background_color:默认值'black',画布背景色,默认为黑色
mode:string:默认值'RGB' ,当参数为'RGBA',其中A代表透明度,且'background_color'不为空时,背景为透明。
relative_scaling"float:默认值'auto',文字出现的频率与字体大小的关系,设置为1时词语出现的频率越高,其字体越大,默认为0.5。
color_func:callable:默认为None,获取颜色函数,用户可以实现从图像中获取颜色,为None时使用内部默认颜色参数
regexp:string or None:使用正则表达式来分隔输入的文本,当使用了generate_from_frequencies时本参数将被屏蔽
collocations:bool:默认为True ,是否包括两个单词的搭配,当使用了generate_from_frequencies时本参数将被屏蔽
colormap:string or marplotlib colormap:默认为'viridis' ,随机为每个词染色,本参数使用了'color_func'时将会被屏蔽
normalize_plurals:bool 默认为True,是否移除词尾的s,尚未发现本参数的用途。
repeat:bool,默认为False,是否重复单词或者短语,直到满足max_words和min_font_size,当文本内容较少时建议设置为真
3. 代码,单词填充圆形
#导入模块
import matplotlib.pyplot as plt
import numpy as np
from wordcloud import WordCloud
#文本信息
text='surprised'
#显示的形状
mask=(x-180)**2+(y-180)**2>180**2#圆形外部将被设置为背景色
mask=255*mask.astype(int)
word_cloud=WordCloud(background_color='white',repeat=True,mask=mask)
word_cloud.generate(text)
plt.axis('off')
plt.imshow(word_cloud,interpolation='bilinear')#对生成的图像进行插值,保证生成图像的平滑
plt.show()
运行结果: