用wordcloud搞词云,大数据词云,自定义图像

准备工作:

pip install jieba #分词用的
pip install wordcloud #主角
pip install imageio #读取文件用的
View Code

接下来讲解一下这个包下面主要分为4大类:

"""
类    功能
WordCloud([font_path, width, height, …])    生成和绘制词云对象
ImageColorGenerator(image[, default_color])    基于图片的色彩
random_color_func([word, font_size, …])    随机生成颜色
get_single_color_func(color)创建一个颜色函数,它返回一个色调和饱和度

"""
View Code

接下来主角WordCloud 的参数方法:

 1 """
 2 参数    详解
 3 font_path    词云图的字体路径(OTF或TTF格式)
 4 width    画布的宽度、默认为400,如果mask不为空时,设置为mask获取图片的大小
 5 height    画布的高度,默认为200,如果mask不为空时,设置为mask获取图片的大小
 6 prefer_horizontal    默认值0.9;当值<1时,遇到不合适的地方时,算法将词体自动旋转
 7 mask    默认为None;如果不为空,指定了画布的图形,则width和height值不生效,使用提供的图形的大小
 8 contour_width    如果mask不为空,并且contour_width>0,将描绘出mask获取图片的轮廓,值越大,轮廓的线越粗
 9 contour_color    使用Mask时,描绘图片轮廓的颜色
10 scale    图片生成后放大缩小时的分辨率
11 min_font_size    词云图显示的最小字体,默认为4
12 max_font_size    词云图显示的最大字体
13 max_words    词云显示的最大词数
14 font_step    字体步长
15 stopwords    不显示的词,如果没有设置,则使用默认的内置的STOPWORdS列表;如果使用generate_from_frequencies参数,则忽略
16 background_color    背景颜色
17 mode    默认为"RGB",当mode="RGBA"并且background_color为None时,将会显示透明背景
18 relative_scaling    字体大小与词频的关系,默认值为auto
19 color_func    默认为None,color_func=lambda *args, **kwargs:(255,0,0)词云的字体颜色将这设置为红色
20 regexp    使用正则切分,默认为r"\w[\w’]+",如果使用generate_from_frequencies则此参数不生效
21 collocations    是否包含两个词的搭配,默认为True,如果使用generate_from_frequencies则此参数不生效
22 colormap    设置颜色的参数,默认为"viridis",如果使用color_func参数,则此参数不生效
23 normalize_plurals    是否删除尾随的词,比如’s,如果使用generate_from_frequencies参数,则此参数不生效
24 repeat    是否重复词组直到设置的最大的词组数
25 include_numbers    是否包含数字,默认我False
26 min_word_length    最小数量的词,默认为0
27 collocation_threshold    默认为30,整体搭配的评分等级
28 """
View Code

主角下面有哪些方法呢?

 1 """
 2 方法
 3 fit_words()    根据词频生成词云
 4 generate_from_frequencies()    根据词频生成词云
 5 generate()    根据文本生成词云
 6 generate_from_text()    根据文本生成词云
 7 process_text()    将长文本分词,并去除屏蔽词
 8 recolor()    对输出颜色重新着色
 9 to_array()    转换为numpy数组
10 to_file()    保存为图片文件
11 to_svg()    保存为SVG(可缩放矢量图形)
12 
13 """
View Code

实战例子1基本操作:

import wordcloud
font_path = "./fonts/华文琥珀.ttf"
# w = wordcloud.WordCloud(font_path=font_path,#字体
#                         width=100,#宽度
#                         height=100,#高度
#                         margin=10,#外边距
#                         background_color="black",#背景色
#                         # scale=100,#别设置这个,
#                         mode="RGBA",#假的,默认为RGB
#                         max_words=300,#最多显示几个词
#                         random_state=1,#指定了以后,所有的随机都会不变
#                         min_font_size=4,#最小字体大小
#                         include_numbers=False,#不会画数字
#                         min_word_length=0, #最小的高度
#                         collocation_threshold=30,#默认为30,整体搭配的评分等级
#                         )
# text = """
# Love is not a matter of counting the days. ...
# 2.With the wonder of your love, the sun above ...
# 3.Love is a fabric that nature wove and ...
# 4.First love is unforgettable all one's life. ...
# 5.In the very smallest cot there is room ...
# """
# w.generate(text)
# w.to_file('output1.png')
View Code

实战例子2自定义图形轮廓图:

# 生成带有mask的图片,你生不成图片是因为你的词汇量太少,词汇量越大,效果越好。
mask = np.array(Image.open("62.jpg"))
with open("text.txt","r")as f:
    text = f.read()
wordcloud = wordcloud.WordCloud(font_path=font_path, mask=mask, margin=1, random_state=1, background_color='white').generate(text)
wordcloud.to_file('wordcloud_mask.jpg')
View Code

 

posted @ 2021-06-08 09:16    阅读(150)  评论(0编辑  收藏  举报