1、简介

wordcloud是优秀的词云展示的第三方库

2、导入模块

import wordcloud

3、wordcloud对象初始化

以下参数值均为官方文档给出的默认值

w=wordcloud.WordCloud(

font_path=None,

width=400,

height=200,

margin=2,

ranks_only=None,

prefer_horizontal=0.9,

mask=None,

scale=1,

color_func=None,

max_words=200,

min_font_size=4,

stopwords=None,

random_state=None,

background_color='black',

max_font_size=None,

font_step=1,

mode='RGB',

relative_scaling='auto',

regexp=None,

collocations=True,

colormap=None,

normalize_plurals=True,

contour_width=0,

contour_color='black',

repeat=False,

include_numbers=False,

min_word_length=0,

collocation_threshold=30)

参数含义:

参数

类型

默认值

说明

font_path

string

字体文件路径,如果是中文词云,则该路径必须指向一个中文字体,否则会出错

width

int

400

画布宽度

height

int

200

画布高度

margin

int

2

离画布边缘的距离

prefer_horizontal

float

0.9

水平展示词语与垂直展示词语的数量比

mask

nd-array 或None

None

蒙版;如果给出了mask,那么width与height将不起作用,而是代之以mask——词云将生成于mask区域内;mask以外背景部分将填充以纯白色。

contour_width

float

0

启用mask时,该项表示mask的轮廓线宽度

contour_color

color value

'black'

mask轮廓线的颜色

scale

float

1

程序运行过程中,用于绘图和计算的时间比。对于大型词云,使用scale会明显更快,但会导致更粗糙的文字图形。更大的scale会有更精细文字图形,因为有更多的时间去参与绘图。

min_font_size

int

4

最小的字体大小。当图形中没有更多的空间可以容纳最小字体时,程序运行完毕。

font_step

int

1

不同等级间文字大小的差异。大于1时,程序运行速度加快,但结果图不太好看

max_words

number

200

词云中的最大词语数

stopwords

string list

None

None

一个停用词表,停用词表中的词将不会用于词云构建。当使用generate_from_frequencies()时该参数将会被忽略

random_state

数字

None

随机数种子,同一个种子对应的随机数序列相同

background_color

color value

'black'

背景色

max_font_size

int

None

None

最大词的尺寸。如果设置为None,将自动设置为图形高度

mode

string

'RGB'

如果设置为'RGBA',并且background_color设置为None时,将采用透明的背景

relative-scaling

float

'auto'

词频对词云中词语大小的重要性。取0时,大小仅与词语等级有关;取1时,如果某词语的词频是另一词语的两倍,那它在词云中的大小也是该词语的两倍。

如果想综合考虑词频与词语等级,0.5附近不错。

默认为'auto'即0.5。

当repeat参数为True时,该项将被设置为0

color_func

callable

None

callable对象,表示为每个单词设置一个PIL color,详见官网

regexp

string

None

None

用于分割输入文本的正则表达式,格式为r'表达式';如果设置为None,将采用r'\w[\w']+';

当使用generate_from_frequencies()时,该参数会被忽略

collocations

bool

True

是否包含双单词词语(bigram)(针对英文);

当使用generate_from_frequencies()时,该参数会被忽略

colormap

string

matplotlib colormap

'viridis'

一个Matplotlib颜色表,在词云中绘制时将为每个词语随机取该表中的颜色;

当指定了color_func参数时,该参数会被忽略

normalize_plurals

bool

True

是否移除复数单词而把它的词频计入其单数形式中。

当使用generate_from_frequencies()时,该参数会被忽略

repeat

bool

False

当max_words或min_foont_size达到时,是否重复某些单词以填充剩余空白

include_numbers

bool

False

是否包含数字

min_word_length

int

0

一个词语最少包含的字母数

collation_threshold

int

30

双单词词语(bigrams)被认为是一个正确英文词语的阈值标准,具体见官网

补充:

1、画布越大,程序越慢。如果想快速获得大的词云,有两种方法:a、设置小的画布;b、使用scale参数

2、构建词云时,词语等级比词频的权重更大,二者的比重可以通过参数relative_scaling修改,当然默认参数'auto'就已经很好了(至于什么是词语等级,笔者也不清楚,可能是英文专有的某个等级吧,希望有明白的人可以帮我解答一下)

3、处理中文文本时,font_path必须指向一个中文文字的ttf文件,例如

font_path='C:/Windows/Fonts/simhei.ttf'

否则原方法将会识别不了中文

4、参数mask为,从外部通过scipy.misc.imread( filename )读入的png文件,例如:

from scipy.misc importimread

M=imread('picture.png')

w=wordcloud.WordCloud(mask=M)

4、方法

w=wordcloud.WordCloud(...)

w.func()

这里的func可以是以下方法:

方法

说明

fit_words(frequencies)

从{词语:词频}的dict对象生成词云

generate_from_frequencies(frequencies)

同上

generate(text)

从文本数据(string类型)生成词云

generate_from_text(text)

同上

process_text(text)

将一个长文本划分为词语,消除其中的停用词

recolor([random_state , color_func , colormap])

重新设置颜色模式

to_array()

将词云转化为一个数字数组

to_file(filename)

输出为image文件(文件类型为filename的后缀)

to_svg([embed_font , optimize_embedded_font,...])

输出为SVG文件

补充:

1、在用文本数据生成词云时,由于中英文差异——英文一个单词就表示一个词语,中文词语还需要根据语境识别,所以制作中文词云时,必须先用jieba库进行词性划分(详见:jieba:统计一篇文章中词语数 - ShineLe - 博客园),然后以空格形式将这些词语连接起来,使其具有与英文词语一样的形式(英文词语都是以空格分开),之后再使用generate(text)、generate_from_text(text)方法提取时才不会出错。否则直接读取一篇正常的中文文章并用上述两种方法,一定会出错的!

代码:使用jieba库对中文文章进行词性划分,并用空格连接

importjiebaimportredefclean(line):

pattern= re.compile(u'[^\u4e00-\u9fa5]')

line= re.sub(pattern,'',line)returnline

with open('《边城》.txt' , 'r' , encoding='utf-8') as f:

s=f.read() #读取原文本

s=clean(s) #删除其中符号、数字等非中文字符

words=jieba.lcut(s)

ch2eng=' '.join(words) #用空格连接中文词语,构成一个完整的字符串

2、如果已经有词语和词频数据,可以通过方法fit_words(frequencies)、generate_from_frequencies(frequencies)构建词云,这里的frequencies是dict对象或Counter对象,数据组织形式为{ '词语1':词频 , '词语2':词频 , ...},例如

{ '翠翠':439 , '祖父':270 , ...},这种数据可以通过collections.Counter()得到(具体方法见:Python:计数器collections.Counter - ShineLe - 博客园 和  jieba:统计一篇文章中词语数 - ShineLe - 博客园 第七部分例子①)。需要注意的是,Counter()的返回值是Counter类型,并不是dict类型,虽然二者很像。

把Counter类型转换为Dict的方法是

result_Counter=Counter(wordlist)

result_list= sorted(result_Counter.items(), key=lambda item: item[1], reverse=True)

result_dict= dict(result_list)

先用sorted()函数进行排序,得到排序后的list类型,再用dict()将list转化为dict类型

5、显示

plt.imshow(w) #w为wordcloud对象

plt.axis('off')

plt.show()

6、保存

w.to_file('cloud.png')

python wordcloud路径_Python:wordcloud相关推荐

  1. python设置路径_Python探索之修改Python搜索路径

    当Python执行import语句时,它会在一些路径中搜索Python模块和扩展模块.可以通过sys.path查看这些路径,比如: >>> import sys >>&g ...

  2. python存放路径_python文件路径操作方法总结

    在python中,文件使用十分频繁,本文将向大家介绍python文件路径的操作:得到指定文件路径.得到当前文件名.判断文件路径是否存在.获得指定文件夹下所有文件.获得文件后缀.拼接路径和文件名. 1. ...

  3. python import 路径_Python 从相对路径下import的方法

    例如我们有如下结构的文件: pkg/ __init__.py libs/ some_lib.py __init__.py components/ code.py __init__.py 如果我们想要在 ...

  4. python import 路径_python import 上级目录的导入

    python import 上级目录的导入,路径,上级,文件,目录,递归 python import 上级目录的导入 易采站长站,站长之家为您整理了python import 上级目录的导入的相关内容 ...

  5. python编译器路径_python编译器安装教程以及环境变量配置

    python解释器安装教程以及环境变量配置 python解释器安装教程 Python作为一门编程语言,其魅力远超C#,JАVa,C,C++,它被称为"胶水语言",更被热爱它的程序猿 ...

  6. python合并路径_python url合并与分离

    #!/bin/python3 from urllib import parse parse.urlsplit() 将url分为6个部分,返回一个包含6个字符串项目的元组:协议.位置.路径.参数.查询. ...

  7. doc python 颜色_Python wordcloud.ImageColorGenerator方法代码示例

    本文整理汇总了Python中wordcloud.ImageColorGenerator方法的典型用法代码示例.如果您正苦于以下问题:Python wordcloud.ImageColorGenerat ...

  8. Python 数据可视化:WordCloud 词云的构建

    WordCloud 官方文档:https://amueller.github.io/word_cloud/index.html WordCloud GitHub 地址:https://github.c ...

  9. Python第三方库〖 wordcloud 〗

    Python第三方库[ wordcloud ] 1. 简介 2. 安装方法 3. 基本使用方法 4. 配置对象参数 5. 测试程序 1. 简介 wordcloud: 优秀的词云展示第三方库,以词语为基 ...

最新文章

  1. 【Android 面试基础知识点整理】
  2. CentOS7防火墙firewalld和iptable的设置和使用
  3. 20135337朱荟潼——实验三
  4. 外观模式(Façade Pattern)
  5. 【VS C++ 2010】查看内存的方法详解
  6. 程序员求助:被领导强行要求写Bug该怎么办?网友的回答让我笑翻
  7. ZH奶酪:【阅读笔记】Deep Learning, NLP, and Representations
  8. Android Studio(五):修改Android Studio项目包名
  9. Android加载网络GIF完整解决方案
  10. python批量音频转格式_ffmpeg 转为16K PCM格式,python生成批量转码脚本
  11. 倒计时3天!这届XIN公益大会很不一般!
  12. android 标准时间格式,android开发中关于含有中文字段的格林尼治标准时间的时间格式转换...
  13. App uni.downloadFile ios问题
  14. 杭州旅游1-2日最佳路线
  15. 基于驱动框架编写驱动代码
  16. 只能输入中文,及中文标点符号正则/只能输入英文,及英文标点符号正则
  17. 计算机专业海报加文字,PS制作简洁漂亮的文字主题海报 -电脑资料
  18. 列车调度(贪心):单机调度问题贪心算法
  19. Uboot中lpddr4的初始化(i.MX8M)
  20. 虚拟现实 VR + 3D 可视化:场景一体化高阶管控平台

热门文章

  1. linux usermod命令
  2. java 通配符_Java中的通配符匹配
  3. RGB颜色值与十六进制颜色码怎么相互转换?
  4. 电子签名?玩具罢了!(web前端)
  5. java steam collect_Java8 如何进行stream reduce,collection操作
  6. HP服务器硬盘坏了一块,教你如何快速更换
  7. Iphone开发中的web开发
  8. 原来华为云账号,竟有这些你不知道的“猫腻”?
  9. cocos源码分析--SpriteBatchNode绘图原理(转--侵删)
  10. MonkeyRunner API(一)