如何使用wordcloud包,绘制词云图。
输入:
1、所需画成词云图的文本数据
2、词云图轮廓所需的图片
输出:
1、满足要求的词云图片
二、代码详情
1、使用到的第三方包
wordcloud:绘制词云图的第三方包
jieba:中文分词包
PIL:图片读取第三方包
numpy:处理数据第三方包
matplotlib:绘图第三方包
os:文件读取第三方包
2、代码详情
import jieba #中文分词包
from wordcloud import WordCloud, STOPWORDS, ImageColorGenerator
from PIL import Image
import numpy as np
import matplotlib.pyplot as plt
from os import path
#定义绝对路径地址
__file__ = "C:/Users/cd/demo/"
#把路径地址字符串转换为文件路径
d = path.dirname(__file__)
#path.join实现文件地址的链接,open则打开相应的文件,read则读取相应的文件
text = open(path.join(d, 'sports.txt')).read()
#中文文件处理
chtext = ''
with open(path.join(d, 'sports.txt'),'r') as fin:
for line in fin.readlines():
line = line.strip('\n')
print line
chtext += ' '.join(jieba.cut(line))
#调用包PIL中的open方法,读取图片文件,通过numpy中的array方法生成数组
backgroud_Image = np.array(Image.open(path.join(d, "timg.jpg")))
#停用词可以如下定义,也可以在WordCloud中定义.停用词的增加和删除操作如下
stopwords = set(STOPWORDS)
#绘制词云图
wc = WordCloud(
background_color='white',# 设置背景颜色
mask=backgroud_Image,# 设置背景图片
font_path='C:\Windows\Fonts\STZHONGS.TTF', # 若是有中文的话,这句代码必须添加,不然会出现方框,不出现汉字
max_words=2000, # 设置最大现实的字数
stopwords = STOPWORDS,# 设置停用词,停用词则不再词云图中表示 也可以直接有字符串,设置停用词stopwords = 'to'
max_font_size=150,# 设置字体最大值
random_state=1,# 设置有多少种随机生成状态,即有多少种配色方案
scale = 4#设置生成的词云图的大小
#regexp = 'to'#设置词语文字段的解析的分隔字段
)
#传入需画词云图的文本,与该方法作用相同generate_from_text(text)
wc.generate(chtext)
# 展示图片
#根据原始背景图片的色调进行上色
image_colors = ImageColorGenerator(backgroud_Image)
plt.imshow(wc.recolor(color_func=image_colors))
#根据原始黑白色调进行上色
#plt.imshow(wc.recolor(color_func=grey_color_func, random_state=3), interpolation='bilinear') #生成黑白词云图
#根据函数原始设置进行上色
#plt.imshow(wc)
#隐藏图像坐标轴
plt.axis("off")
plt.show()
# 保存生成的词云图
wc.to_file(path.join(d, "alice.png"))
注:
1、原始图片
2、原始文本
乒乓球起源
乒乓球
乒乓球(11张)
乒乓球起源于英国。19世纪末,欧洲盛行网球运动,但由于受到场地和天气的限制,英国有些大学生便把网球移到室内,以餐桌为球台,书作球网,用羊皮纸做球拍,在餐桌上打来打去。1890年,几位驻守印度的英国海军军官偶然发觉在一张不大的台子上玩网球颇为刺激。后来他们改用实心橡胶代替弹性不大的实心球,随后改为空心的塑料球,并用木板代替了网拍,在桌子上进行这种新颖的“网球赛”, 动更快地发展。