转载地址:https://zhuanlan.zhihu.com/p/20436581
上文末尾提到 Python 下还有一款词云生成器。amueller/word_cloud · GitHub

可以直接使用命令 pip install wordcloud 安装,自行补充完整依赖。

网上搜不到有关的中文文章,自己探索了一下,也算做出了结果。由于没有中文支持的说明和中文文档,在此简单补充并翻译部分文档。翻译可能有出入仅供参考,只是为了加深自己理解所用。

#后面有示例和展示。想了想放到一篇里面太臃肿,所以另起一篇展示。

API Reference

API 分为三部分

生成词云的部分、生成图像颜色的部分和随机颜色函数。

wordcloud.WordCloud

class wordcloud.WordCloud(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 : string

用到的字体文件的路径(支持OTF 或 TTF格式)。默认字体是
DroidSansMono 。非 Linux 系统需自行调整路径参数。

说明:Windows 下中文支持的方法。

1、准备好一个中文字体,如 simhei.ttf

2、将其复制到 C:\Python27\Lib\site-packages\wordcloud\

3、在 wordcloud.py 中修改 FONT_PATH 为相应字体。(注意是大写,大写的字体路径是默认路径,小写的字体是后面使用时可以再次指定的,会覆盖默认字体)

FONT_PATH = os.environ.get("FONT_PATH", os.path.join(os.path.dirname(__file__),

"simhei.ttf"))

4、注意中文的编码应为 utf-8 ,否则会导致乱码无法显示

#可以参见不知道什么语言的用户提出的 issue Word cloud unicode (multilanguage) problem · Issue #70 · amueller/word_cloud · GitHub

width : int (default=400)

画布宽度

height : int (default=200)

画布高度

ranks_only : boolean (default=False)

是否只用词频排序而不是实际词频统计值,默认 False

prefer_horizontal : float (default=0.90)

词语水平出现的频率,默认 0.9 (即垂直出现频率为 0.1 )

mask : nd-array or None (default=None)

如果参数为空,则使用二维遮罩绘制词云。
如果 mask 非空,设置的宽高值将被忽略,遮罩形状被 mask 取代。
除全白(#FFFFFF)的部分将不会绘制,其余部分会用于绘制词云。

scale : float (default=1)

计算与绘制图像间的比例。对于较大的词云图像,使用比例而非较大的画布会显著提升绘图速度,但是可能会造成词语间的粗糙拟合。

max_words : number (default=200)

词语的最大数量

stopwords : set of strings

屏蔽词

max_font_size : int or None (default=None)

最大词的最大字号。如果不指定,则为图像高度。

说明:

画布越大,运行耗时会显著提升。如果你需要输出一幅较大的词云图像,尝试设置较小的画布并使用比例参数来调节。

基于最大字号和比例参数,算法可能会更倾向于使用词语的排名顺序而非它们的实际频率。

属性:

words_: list of tuples (string, float)

带有频率的词语

layout_:list of tuples (string, int, (int, int), int, color))

编码拟合好的词云。每个词语的字符串、字号、位置、方向和颜色的编码。

方法:

static __init__(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)

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

class wordcloud.ImageColorGenerator(image)

基于 RGB 图像生成颜色。词语将会使用一定矩形区域内的平均颜色上色。这个对象可以被调用作为词云或者重新上色方法的颜色函数。

参数:image : nd-array, shape (height, width, 3)

用来生成词语颜色的图像。 Alpha 通道会被忽略。大小应与画布大小相同。

static __init__(image)

wordcloud.random_color_func

wordcloud.random_color_func(word=None, font_size=None, position=None, orientation=None, font_path=None, random_state=None)

随机生成色调

默认的上色方法。仅仅会生成一个随机的色调( 80% 颜色值 50% 亮度)

参数:

word, font_size, position, orientation : ignored.

random_state : random.Random object or None, (default=None)

如果一个随机的对象已经给出,这会用作生成随机数字(没看懂)

Python word_cloud 部分文档翻译 标签云系列(二)的更多相关文章

  1. Python word_cloud 样例 标签云系列(三)

    转载地址:https://zhuanlan.zhihu.com/p/20436642word_cloud/examples at master · amueller/word_cloud · GitH ...

  2. Python pytagcloud 中文分词 生成标签云 系列(一)

    转载地址:https://zhuanlan.zhihu.com/p/20432734工具 Python 2.7 (前几天试了试 Scrapy 所以用的 py2 .血泪的教训告诉我们能用 py3 千万别 ...

  3. [Python] 文科生零基础学编程系列二——数据类型、变量、常量的基础概念

    上一篇:[Python] 文科生零基础学编程系列--对象.集合.属性.方法的基本定义 下一篇: (仍先以最简单的Excel的VBA为例,语法与Python不同,但概念和逻辑需要理解透彻) p.p1 { ...

  4. [Python] 文科生零基础学编程系列三——数据运算符的基本类别

    上一篇:[Python] 文科生零基础学编程系列二--数据类型.变量.常量的基础概念 下一篇: ※ 程序的执行过程,就是对数据进行运算的过程. 不同的数据类型,可以进行不同的运算, 按照数据运算类型的 ...

  5. Python解析器源码加密系列之(二):一次使用标准c的FILE*访问内存块的尝试

    摘要:由于近期打算修改Python解释器以实现pyc文件的加密/解密,出于保密的要求,解密之后的数据只能放在内存中,不能写入到文件中.但是后续的解析pyc文件的代码又只能接受FILE*作为入参,所以就 ...

  6. Android高效率编码-第三方SDK详解系列(二)——Bmob后端云开发,实现登录注册,更改资料,修改密码,邮箱验证,上传,下载,推送消息,缩略图加载等功能

    Android高效率编码-第三方SDK详解系列(二)--Bmob后端云开发,实现登录注册,更改资料,修改密码,邮箱验证,上传,下载,推送消息,缩略图加载等功能 我的本意是第二篇写Mob的shareSD ...

  7. Python之虚拟机操作:利用VIX二次开发,实现自己的pyvix(系列一)成果展示和python实例

    在日常工作中,需要使用python脚本去自动化控制VMware虚拟机,现有的pyvix功能较少,而且不适合个人编程习惯,故萌发了开发一个berlin版本pyvix的想法,暂且叫其OpenPyVix.O ...

  8. [Python] 利用Django进行Web开发系列(二)

    1 编写第一个静态页面——Hello world页面 在上一篇博客<[Python] 利用Django进行Web开发系列(一)>中,我们创建了自己的目录mysite. Step1:创建视图 ...

  9. pycloudtag 标签云

    原创,转载请标明 QQ:231469242 # -*- coding: utf-8 -*- """Python3.0 Created on Sat Nov 26 08:5 ...

随机推荐

  1. 最新的CocoaPods 安装及使用

    当在开发iOS应用时,会经常使用到很多的第三方开源类库,一般的方法是直接从GitHub下载,然后拖到项目中使用,如果该开源类库不依赖其他的类库,就可以直接使用:如果该开源类库还依赖一些其他的类库,则需 ...

  2. 20172319 2018.03.27-04.05 《Java程序设计》第4周学习总结

    20172319 2018.03.27-04.05 <Java程序设计>第4周学习总结 教材学习内容总结 第四章 编写类 类与对象的回顾:对象是有状态的,状态由对象的属性值确定.属性由类中 ...

  3. youi软件测试计划

    beta版本中,我们将重视软件开发中的测试. 我们的软件是需要测试的,不测试怎么知道好与不好呢?有的程序不测试甚至都不能运行-- 我们的目标呢:就是经过测试之后软件的质量得到有效的保证.不管什么情况都 ...

  4. web10 动态action的应用

    电影网站:www.aikan66.com 项目网站:www.aikan66.com游戏网站:www.aikan66.com图片网站:www.aikan66.com书籍网站:www.aikan66.co ...

  5. Task 4.3 求环形数组的最大子数组和

    任务要求:输入一个整形数组,数组里有正数也有负数. 数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和.    如果数组A[0]……A[j-1]首尾相邻,允许A[i-1], …… A[n- ...

  6. 文件名命工具类(将指定目录下的文件的type类型的文件,进行重命名,命名后的文件将去掉type)

    import java.io.File; /** * <b>function:</b> 文件命名工具类 * @author hoojo * @createDate 2012-5 ...

  7. “吃神么,买神么”的第一个Sprint计划(第五天)

    “吃神么,买神么”项目Sprint计划 ——5.25  星期一(第五天)立会内容与进度 摘要:logo2出来了,修改过不一样的风格,组内总体评价可以,但是颜色要改,色调没注意,统一决定改成与背景色一致 ...

  8. Week4-作业1:阅读与博客

    第四章.两人合作 1.原文: 在变量面前加上有意义的前缀,程序员就能一眼看出变量的类型及相应的语义.这就是“匈牙利命名法”的用处.还有一些地方不适合用“匈牙利命名法”,比如,在一些强类型的语言(如C# ...

  9. 【Leetcode】143. Reorder List

    Question: Given a singly linked list L: L0→L1→…→Ln-1→Ln, reorder it to: L0→Ln→L1→Ln-1→L2→Ln-2→… You ...

  10. Hadoop初探

    本文转自:https://blog.csdn.net/column/details/14334.html 前言 Hadoop是什么? 用百科上的话说:“Hadoop是一个由Apache基金会所开发的分 ...