标签利器:wordcloud(词云),一起来学(zhuang)习(bi)吧!
安装
- 安装wordcloud包,
pip install wordcloud
,如果需要对文本的句子进行分解,比如说我是一名大学生
进行分解之后就变成了我是\一名\大学生
.可以安装jieba,同运行pip install jieba
.
使用
安装完之后,我们来运行一个Demo
123456789101112131415161718192021222324252627282930313233343536#!/usr/bin/python#-*- coding: utf-8 -*-"""Using custom colors====================Using the recolor method and custom coloring functions."""import matplotlib.pyplot as pltimport randomimport osfrom wordcloud import WordCloud, STOPWORDS#此段代码解决 1.matplotlib中文显示问题 2 '-'显示为方块问题from pylab import *mpl.rcParams['font.sans-serif'] = ['SimHei']mpl.rcParams['axes.unicode_minus'] = Falsefont=os.path.join(os.path.dirname(__file__), "FZSTK.ttf")text = open(u"test.txt").read().decode('gbk')# adding movie script specific stopwordsstopwords = set(STOPWORDS)stopwords.add("int")stopwords.add("ext")#wc = WordCloud(font_path=font,max_words=2000, mask=mask, stopwords=stopwords, margin=10,random_state=42,max_font_size=20,background_color='black',scale =2).generate(text)wc = WordCloud(font_path=font,max_words=30, max_font_size=50,stopwords=stopwords,margin=10,random_state=42,background_color='black',scale =1).generate(text)# store default colored imagedefault_colors = wc.to_array()wc.to_file("a_new_hope.png")#设置为 wordcloud 默认plt.title('WordCloud Demo')plt.imshow(default_colors)plt.axis("off")plt.show()运行结果
wordcloud
里面的基本参数.123456789101112WordCloud(font_path=None, width=400, height=200, margin=5, ranks_only=False, prefer_horizontal=0.9,mask=None, scale=1, color_func=<function random_color_func at 0x2b8b422a31b8>, max_words=200, stopwords=None,random_state=None, background_color='black', max_font_size=None)#font_path:用到的字体文件的路径(支持OTF或TTF格式).默认字体是DroidSansMono,但是不能够显示中文,所以可以Windows系统下的C:\Windows\Fonts中找字体替换.#width:画布宽度,默认值为400#height:画布高度,默认值为200#ranks_only:是否只用词频排序而不是实际词频统计值,默认 False#prefer_horizontal:词语水平出现的频率,默认0.9(即垂直出现频率为0.1)#mask: nd-array or None (default=None)如果参数为空,则使用二维遮罩绘制词云.如果mask非空,设置的宽高值将被忽略,遮罩形状被 mask 取代.除全白(#FFFFFF)的部分将不会绘制,其余部分会用于绘制词云。#scale : float (default=1)计算与绘制图像间的比例。对于较大的词云图像,使用比例而非较大的画布会显著提升绘图速度,但是可能会造成词语间的粗糙拟合。#max_words :(default=2000)词语的最大数量#stopwords : set of strings 屏蔽词#max_font_size : int or None (default=None)最大词的最大字号.wordcloud
里面的方法123456789101112131415161718192021222324252627282930#static fit_words(frequencies) / generate_from_frequencies: 依据词语和频率生成词云.参数:frequencies : array of tuples(包含了词语和频率的元组.)#static generate(text) / generate_from_text: 从文本中生成词云,调用 _text 和 fit_words.#static process_text(text): 将长文本分词并去除屏蔽词(此处指英语,中文分词还是需要自己用别的库先行实现,使用上面的 fit_words(frequencies))参数:text : string(需要处理的文本)返回:words : list of tuples (string, float)(带有相应频率的词语)#static recolor(random_state=None, color_func=None): 对现有输出重新着色。重新上色会比重新生成整个词云快很多。#random_state : RandomState, int, or None, default=None如果非空,会使用固定的随机状态。如果给出一个整数,它会被用作 random.Random 状态的一个种子(根源)#color_func : function or None, default=None生成新颜色的函数,如果为空,则使用 self.color_func#static to_array():转化为 numpy array返回:image : nd-array size (width, height, 3)numpy 矩阵的词云图像#static to_file(filename):输出到文件参数:filename : string输出的文件路径#wordcloud.ImageColorGenerator(image): 基于 RGB 图像生成颜色。词语将会使用一定矩形区域内的平均颜色上色。这个对象可以被调用作为词云或者重新上色方法的颜色函数。参数:image : nd-array, shape (height, width, 3)(用来生成词语颜色的图像.)#wordcloud.random_color_func(word=None, font_size=None, position=None, orientation=None, font_path=None, random_state=None):随机生成色调,默认的上色方法。仅仅会生成一个随机的色调(80% 颜色值 50% 亮度)
使用mask元素绘制图像
- 我将我的原博客的标签页里的标签做个词云,先利用BeautifulSoup将网页的信息进行解析,然后使用一张心型图做mask生成一张词云.效果如下: