用wordcloud搞词云,大数据词云,自定义图像
准备工作:
pip install jieba #分词用的 pip install wordcloud #主角 pip install imageio #读取文件用的
接下来讲解一下这个包下面主要分为4大类:
""" 类 功能 WordCloud([font_path, width, height, …]) 生成和绘制词云对象 ImageColorGenerator(image[, default_color]) 基于图片的色彩 random_color_func([word, font_size, …]) 随机生成颜色 get_single_color_func(color)创建一个颜色函数,它返回一个色调和饱和度 """
接下来主角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 """
主角下面有哪些方法呢?
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 """
实战例子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')
实战例子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')
-----------------------------------------------------------------------------------------------------------------------------------------