说说
最近好友让我帮他做一个四六级词汇的词云脚本,通过借鉴诸位csdn大佬的大作,终于不负好友所托,成功完成。然后我就突发奇想拿这个脚本的一部分做了一个人名啊,祝福语,头像之类的词云,效果还不错,以此记录下自己的成果。
注:代码注释足够详尽,就不多做解释了
代码
'''
1. 这画的是词云
2. 字体库在C:\windows\fonts
'''
#引入结巴库
import jieba
#词云库
from wordcloud import WordCloud
# python的可视化库,也是二级考试推荐的可视化库
import matplotlib.pyplot as plt
from PIL import Image #处理图片的
#矩阵 好像也是协助处理图片的
import numpy as np
#open 内置函数 不需要引用 直接使用
'''
打开文件xxx.txt和python 文件放到同一个目录,可直接引用不需要路径,
里面的内容可以多种多样,比如一些彩虹屁啊,人名啊,总之想怎么写就怎么写
'''
f = open('xxx.txt', 'r' ,encoding='utf-8' )
#读取文件
txt = f.read()
#关闭文件,良好的习惯
f.close()
# 将txt里的文字按行分组
words = str.split(txt)
#print(words)
# 通过键值对的形式存储词语及其出现的次数
# 大括号表示 python的字典类型对应,
counts = {}
#数组对象 用来接收需要传递给词云的内容
ciyun = []
items = list(words)
#需要显示的范围 1000即显示前1000个,0到999
for i in range(1000):
word= items[i]
#print("{0:<5}{1:<8}".format(i+1,word))
ciyun.append(word)
#print(ciyun)
#加载图片信息
#这里的图片路径是词云的底片路径
maskph = np.array(Image.open("C:/Users/hp/Desktop/xx.png"))
#join 函数 用斜杆拼接词组
text_cut = '/'.join(ciyun)
wordcloud = WordCloud(scale=1,font_path='STLITI.TTF',mask=maskph,background_color='white',max_words = 1000,max_font_size = 20,repeat=True).generate(text_cut)
# 显示图片
plt.imshow(wordcloud)
plt.axis('off')
#经过词云作用xx.png会生成一个词云图片,保存方法如下,路径自拟即可
wordcloud.to_file("C:/Users/hp/Desktop/xxByCiyun.png")
plt.show()