python词云图_python爬虫学习笔记——6. Wordcloud绘制词云图

整理自. 更详细的介绍和例子参见官网Wordcloud

我注意到可以用pyecharts绘制词云WordCloud,也可以安装wordcloud库绘制词云,两者不是同一个东西,使用上有些区别,pyecharts绘制词云比较简单些(但好像除了矩形,不能指定词云为任意形状?需求证)

第一部分 用pyecharts绘制词云WordCloud

WordCloud.add() 方法签名
add(name, attr, value,
shape=”circle”,
word_gap=20,
word_size_range=None,
rotate_step=45)
name -> str:图例名称
attr -> list:属性名称
value -> list:属性所对应的值
shape -> list:词云图轮廓,有’circle’, ‘cardioid’, ‘diamond’, ‘triangleforward’, ‘triangle’, ‘pentagon’, ‘star’可选
word_gap -> int:单词间隔,默认为 20。
word_size_range -> list:单词字体大小范围,默认为 [12, 60]。
rotate_step -> int:旋转单词角度,默认为 45

一个简单例子

import pyecharts
from pyecharts import WordCloud

myWordCloud = WordCloud("绘制词云",width=1000, height=620)
name = ['Sam S Club', 'Macys', 'Amy Schumer', 'Jurassic World', 
        'Charter Communications', 'Chick Fil A', 'Planet Fitness', 'Pitch Perfect', 
        'Express', 'Home', 'Johnny Depp', 'Lena Dunham',
        'Lewis Hamilton', 'KXAN', 'Mary Ellen Mark', 'Farrah Abraham', 
        'Rita Ora', 'Serena Williams', 'NCAA baseball tournament', 'Point Break'] 
value = [ 10000, 6181, 4386, 4055, 2467, 2244, 1898, 1484, 1112, 965,
         847, 582, 555, 550, 462, 366, 360, 282, 273, 265] 
myWordCloud.add("",name,value,word_size_range=[20,100])
myWordCloud

python词云图_python爬虫学习笔记——6. Wordcloud绘制词云图_第1张图片

第二部分 安装wordcloud库绘制词云

1.安装 pip install wordcloud

2.使用

构造wordcloud类

from wordcloud import WordCloud
wc = WordCloud(参数)

#参数
# font_path:字体文件(OTF或TTF)的路径,字符串

# width:绘图区宽度,默认400,整型

# height:绘图区高度,默认200,整型

# prefer_horizontal:单词倾向于水平放置还是垂直放置,如果值小于1,则会在不合适的情况下旋转单词,浮点型,默认0.9

# mask:是否在给定的形状内绘制单词,这个参数使我们能够根据给定的轮廓形状绘制各种词云图,当此参数不为None时,width和height将被忽略,nd-array型或None,默认None

# scale:计算过程和实际绘图的比例,浮点型,默认1

# min_font_size:绘图时最小的字体大小,整型,默认4

# font_step:字体大小的迭代步长,大于1时可能会出现错误排列,整型,默认1

# max_words:绘图使用的最大单词数,整型,默认200

# stopwords:排除的单词集,字符串集或None,默认为None时,内置的字符串集将会被使用

# background_color:背景颜色,颜色值,默认为'black'

# max_font_size:绘图时最大字体大小,整型或None,默认为None

# mode:模式,默认为'RGB',当为'RGBA'时,倘若背景颜色为None,则会得到透明的背景

# relative_scaling:单词出现频率对其字体大小的权重,值为0时,只考虑单词排名对字体大小的影响,值为1时,具有2倍出现频率的单词具有2倍的字体大小,一般值设置为0.5最棒,浮点型

# color_func:颜色函数,用于生成不同颜色单词的词云图,默认为None

# regexp:正则表达式,用于分词,默认为 r"w[w']+" 

# collocations:是否包括二元词组,布尔型,默认为True

# colormap:颜色图,随机分配颜色给每个单词,如果指定了color_func,则本参数被忽略,字符串或matplotlib colormap型,默认为'viridis'

# normalize_plurals:移除单词末尾的's',布尔型,默认为True

属性

wc.words_
#对应频率的词例,字典类型{字符串:浮点数}
wc.layout_
#记录每个单词的值,字体大小,位置,方向以及颜色,由一系列元组组成的列表,每个元组格式为(string, int, (int, int), int, color)

方法

wc.generate(text)
#从文本中生成词云图

wc.fit_words(frequencies)
#根据给定单词及频率生成词云图
#frequencies:元组型数组,每个元组包含一个单词及其频率

wc.generate_from_frequencies(frequencies, max_font_size=None)
#根据给定单词及频率生成词云图
#frequencies:字典,包含字符串(单词):浮点数(频率)的值对
#max_font_size:最大字体大小

wc.process_text(text)
#将长文本分词,并移除stopwords集合中的单词
#返回字典,dict (string, int)

wc.recolor(random_state=None, color_func=None, colormap=None)
#重新上色
#random_state:随机种子,整型或None

wc.to_array()
#以numpy矩阵的格式返回词云图

to_file(filename)
#以图片的格式返回词云图
#filename:保存路径

根据给定图片的颜色生成颜色函数

from wordcloud import ImageColorGenerator
pic_color=ImageColorGenerator(pic)

生成随机颜色(默认的颜色生成方式)

wc.random_color_func(word=None, font_size=None, position=None, orientation=None, font_path=None, random_state=None)
#random_state:如果给定一个随机的对象,会用作它生成随机种子的数字

3.例子(jieba分词制作中文词云图)

# -*- coding:utf-8 -*-
from os import path
import matplotlib.pyplot as plt  #绘制图片
from scipy.misc import imread   #读取图片
from wordcloud import WordCloud,ImageColorGenerator
import jieba  #结巴分词
text_address=path.abspath('test1.txt')
text=open(text_address).read()   #读取文本
text_cut=jieba.cut(text)   #分词
new_textlist=' '.join(text_cut)   #组合
pic_address=path.abspath('pic1.jpg')  
pic=imread(pic_address)  #读取图片
pic_color=ImageColorGenerator(pic)   #根据图片生成颜色函数
wc=WordCloud(background_color='white',    #构造wordcloud类
mask=pic,
max_font_size=40,
random_state=30,
font_path="font.ttf",
max_words=500,
min_font_size=2,
color_func=pic_color)
wc.generate(new_textlist)    #生成词云图
plt.figure()    #画图
plt.imshow(wc)
plt.axis("off")
plt.show()
wc.to_file(path.join(path.dirname('test.txt'),"zjw5.png"))   #保存图片

python词云图_python爬虫学习笔记——6. Wordcloud绘制词云图_第2张图片

也不用一定是红色词云,可以是彩色图。参见例子

python词云图_python爬虫学习笔记——6. Wordcloud绘制词云图_第3张图片

当然,如果不载入图片,则使用默认的矩形的词频显示范围,比如我自己的例子(不过好像我使用的是pyecharts.WordCloud绘制的词云)

python词云图_python爬虫学习笔记——6. Wordcloud绘制词云图_第4张图片

你可能感兴趣的:(python词云图,python词云图形状,词云图python)