本文已参加「新人创作礼」活动,一起开启创作之路
读书使人充实,评论使人机智,笔记使人准确…。凡有所学,皆成性情。 ———— (英国)培根
wordcloud库常规办法
import wordcloud
c=wordcloud.WordCloud() #构建词云目标,装备目标参数
c.generate("wordcloud by python ") #加载词云文本
c.to_file("pywordcloud.png") #输出词云文件
词云生成过程
- 分隔:以空格分隔单词
- 核算:单词出现次数并过滤(1-2个字母会被滤掉)
- 字体:依据核算装备字号
- 布局:色彩环境尺度
c=wordcloud.WordCloud(参数) 装备目标参数
参数(像素) | 描述 |
---|---|
width(默许400px) | c=wordcloud.WordCloud(width=600) |
height(默许200px) | c=wordcloud.WordCloud(height=400) |
min_font_size(默许4号) | c=wordcloud.WordCloud(min_font_size=10) |
max_font_size(依据高度自动调理) | c=wordcloud.WordCloud(max_font_size=20) |
font_step(默许1,步长) | c=wordcloud.WordCloud(font_step=2) |
font_path(默许None,字体路径) | c=wordcloud.WordCloud(font_path=”msyh.ttc”) |
max_words(默许200,最大数量) | c=wordcloud.WordCloud(max_words=20) |
stop_words(指定去除单词的列表) | c=wordcloud.WordCloud(stop_words={“python”}) |
background_color(默许黑色,词云背景色) | c=wordcloud.WordCloud(background_color=”red”) |
Scale 默许值1。值越大,图画密度越大越明晰
mask参数自定义词云形状
#指定词云形状,默许是长方形,需求引证imread()函数
from scipy.misc import imread
mk=imread("pic.png")
c=wordcloud.WordCloud(mask=mk)
第三方库
numpy 多维数组运算
matplotlib 绘图与数据可视化
pillow 图片处理
wordcloud 词云制造
imageio 图画输入输出
jieba 中文分词
snownlp 中文情感和自然言语处理
itchat 微信老友抓取
读取文件
政府工作报告词云
import wordcloud
# 从外部.txt文件中读取大段文本,存入变量txt中
f = open('政府工作报告.txt',encoding='utf-8')
txt = f.read()
# 构建词云目标w,设置词云图片宽、高、字体、背景色彩等参数
w = wordcloud.WordCloud(width=1000,
height=700,
background_color='white',
font_path='msyh.ttc')
# 将txt变量传入w的generate()办法,给词云输入文字
w.generate(txt)
# 将词云图片导出到当时文件夹
w.to_file('Test1.png')
==wordcloud中文分词(合适中文词云)==
# 导入词云制造库wordcloud和中文分词库jieba
import jieba
import wordcloud
# 构建并装备词云目标w
w = wordcloud.WordCloud(width=1000,
height=700,
background_color='white',
font_path='msyh.ttc')
# 调用jieba的lcut()办法对原始文本进行中文分词,得到string
txt = '由于Python言语的简洁性、易读性以及可扩展性, \
在国外用Python做科学核算的研究机构日益增多, \
一些闻名大学现已选用Python来教授程序设计课程。 \
例如卡耐基梅隆大学的编程基础、 \
麻省理工学院的核算机科学及编程导论就运用Python言语教学。'
txtlist = jieba.lcut(txt)
string = " ".join(txtlist)
# 将string变量传入w的generate()办法,给词云输入文字
w.generate(string)
# w.generate(" ".join(jieba.lcut(txt))) #三段代码合一简写
# 将词云图片导出到当时文件夹
w.to_file('Teste2.png')
自定义制造指定形状的词云
import jieba
import wordcloud
from scipy.misc import imread
mask=imread("图片形状.png") #导入自定义形状图片赋给mask
# 从外部.txt文件中读取大段文本,存入变量txt中
f = open('政府工作报告.txt',encoding='utf-8')
txt = f.read() #阅读提取
f.close() #封闭
# 构建词云目标w,设置词云图片宽、高、字体、背景色彩等参数
w = wordcloud.WordCloud(width=1000,
height=700,
background_color='white',mask=mask,
font_path='msyh.ttc')
# 将txt变量传入w的generate()办法,给词云输入文字
w.generate(" ".join(jieba.lcut(txt)))
# 将词云图片导出到当时文件夹
w.to_file('Test1.png')
==勾勒词云概括==
# 导入词云制造库wordcloud
import wordcloud
# 将外部文件包括的文本保存在string变量中
string = open('hamlet.txt').read()
# 导入imageio库中的imread函数,并用这个函数读取本地图片,作为词云形状图片
import imageio
mk = imageio.imread("ren.png")
# 构建词云目标w,注意添加参数contour_width和contour_color设置概括宽度和色彩
w = wordcloud.WordCloud(background_color="white",
mask=mk,
contour_width=1,
contour_color='steelblue'
)
# # 将string变量传入w的generate()办法,给词云输入文字
w.generate(string)
# 将词云图片导出到当时文件夹
w.to_file('p2.png')
==按模板自身色彩制造词云==
# 导入绘图库matplotlib和词云制造库wordcloud
import matplotlib.pyplot as plt
from wordcloud import WordCloud,ImageColorGenerator
# 将外部文件包括的文本保存在text变量中
text = open('alice.txt').read()
# 导入imageio库中的imread函数,并用这个函数读取本地图片queen2.jfif,作为词云形状图片
import imageio
mk = imageio.imread("alice.png")
# 构建词云目标w
wc = WordCloud(background_color="white",
mask=mk,)
# 将text字符串变量传入w的generate()办法,给词云输入文字
wc.generate(text)
# 调用wordcloud库中的ImageColorGenerator()函数,提取模板图片各部分的色彩
image_colors = ImageColorGenerator(mk)
# 显现原生词云图、按模板图片色彩的词云图和模板图片,按左、中、右显现
fig, axes = plt.subplots(1, 3)
# 最左面的图片显现原生词云图
axes[0].imshow(wc)
# 中心的图片显现按模板图片色彩生成的词云图,选用双线性插值的办法显现色彩
axes[1].imshow(wc.recolor(color_func=image_colors), interpolation="bilinear")
# 右边的图片显现模板图片
axes[2].imshow(mk, cmap=plt.cm.gray)
for ax in axes:
ax.set_axis_off()
plt.show()
# 给词云目标按模板图片的色彩从头上色
wc_color = wc.recolor(color_func=image_colors)
# 将词云图片导出到当时文件夹
wc_color.to_file('out-alice.png')