首页 > 技术文章 > Python之wordcloud库的使用

keepcode 2021-02-26 17:05 原文

1. wordcloud库简介

wordcloud是优秀的词云展示第三方库,它能够将一段文本变成一个词云。

词云:将词语通过图形可视化的方式直观和艺术的展示出来。


2. wordcloud库安装

cmd命令行下:
pip install wordcloud

3. wordcloud库的基本使用

wordcloud库把词云当作一个WordCloud对象

  • wordcloud.WordCloud()代表一个文本对应的词云

  • 可以根据文本中词语出现的频率等参数绘制词云

  • 词云的绘制形状、尺寸和颜色都可以设定

wordcloud库常规方法

wordcloud对具体词云的绘制有一个基本的思路,它的思路是用wordcloud中的WordCloud来表名一个词云。以WorldCloud对象为基础。

w = wordcloud.WordCloud()
方法 描述
w.generate(txt) 向WordCloud对象w中加载文本txt
w.to_file(filename) 将词云输出为图像文件,.png或.jpg格式

例如:

>>>w.generate( "Python and WordCloud" )
>>>w.to_file( "outfile.png" )

词云绘制步骤:

import wordcloud
c = wordcloud.WordCloud()				#步骤1:配置对象参数
c.generate("wordcloud by Python")		#步骤2:加载词云文本
c.to_file("pywordcloud.png")			#步骤3:输出词云文件

从文本生成词云,wwordcloud库做了9件事情:

  • ① 分隔:以空格分隔单词
  • ② 统计: 单词出现次数并过滤。出现次数多的单词显示效果就会变的很大,反之就小
  • ③ 字体: 根据统计配置字号
  • ④ 布局: 颜色环境尺寸

配置对象参数

w = wordcloud.WordCloud(<参数>)
参数 描述
width 指定词云对象生成图片的宽度,默认400像素
height 指定词云对象生成图片的高度,默认200像素
min_font_size 指定词云中字体的最小字号,默认4号
max_font_size 指定词云中字体的最大字号,根据高度自动调节
font_step 指定词云中字体字号的步进间隔,默认为1
font_path 指定字体文件的路径,默认None
max_words 指定词云显示的最大单词数量,默认200
stop_words 指定词云的排除词列表,即不显示的单词列表
mask 指定词云形状,默认为长方形,需要引用imread()函数
background_color 指定词云图片的背景颜色,默认为黑色

例子

>>>w=wordcloud.WordCloud(width=600)
>>>w=wordcloud.WordCloud(height=400)
>>>w=wordcloud.WordCloud(min_font_size=10)
>>>w=wordcloud.WordCloud(max_font_size=20)
>>>w=wordcloud.WordCloud(font_step=2)
>>>w=wordcloud.WordCloud(font_path="msyh.ttc")
>>>w=wordcloud.WordCloud(max_words=20)
>>>w=wordcloud.WordCloud(stop_words={"Python"})

# 指定词云形状
>>>from scipy.misc import imread
>>>mk=imread("pic.png")
>>>w=wordcloud.WordCloud(mask=mk)

# 指定词云背景色
>>>w=wordcloud.WordCloud(background_color="white")

注:在将中文构成词云的时候,它是用空格来去分隔单词的,在中文中我们没有办法使用空格来区分单词,所以在用中文形词云的时候,首先需要对中文文本进行分词。中文分词使用 jieba 库,关于jieba库的使用请参考文章:https://www.cnblogs.com/keepcode/p/14436010.html

中文生词词云实例

import jieba
import wordcloud
txt = "程序设计语言是计算机能够理解和\
识别用户操作意图的一种交互体系,它按照\
特定规则组织计算机指令,使计算机能够自\
动进行各种运算处理。"
w = wordcloud.WordCloud( width=1000,\
	font_path = "msyh.ttc",height=700)
w.generate(" ".join(jieba.lcut(txt)))
w.to_file("pywcloud.png")

jieba.lcut(txt) 将 txt 文本分词并生成一个列表变量,其中过的每一个元素是分隔之后的单词。我们需要这样的单词以文本的形式由空格来分隔组成。

使用 "".join函数将这样的列表由空格将各个元素组织起来。

使用w.generate()加载一段(" ".join(jieba.lcut(txt)))的内容。


以上内容资料均来源于中国大学MOOC网-北京理工大学Python语言程序设计课程
课程地址:https://www.icourse163.org/course/BIT-268001

推荐阅读