首先:导入主要模块
jieba、matplotlib、wordcloud、numpy、PIL
import jieba
from matplotlib import pyplot as plt
from wordcloud import WordCloud
from PIL import Image
from matplotlib import colors
import numpy as np
设置词云的字体
font = r'C:\Windows\Fonts\simhei.TTF'
这里用电脑自带的就可以,在这个文件路径里找自己喜欢的格式,点文件属性查看文件名
设置文件路径
path = r'D:\Python\python_data\venv\学习\test'
在哪写代码,就把文件路径写哪(这里可以更改为自己的路径)
使用jieba模块分词
text = (open(path+r'\data.txt','r',encoding='utf-8')).read()#获得要分词的数据
def tcg(te): #分词函数,如何分取决于txt文件里文字格式
cut = jieba.cut(te)
string = '\n'.join(cut) #比如我的txt里面是一行一个词 就用换行分词
return string
string=tcg(text)#调用
自定义设置词云字体颜色
颜色参数自己随意设置(这里我写了一个蓝色系数组),colormap为后面词云的参数
color_list = ['#378FE7','#686FB6','#4926F8','#57A4C7','#48D6CC',
'#2C31F2','#4325F9','#277BF7','#2557F9']
colormap=colors.ListedColormap(color_list)#调用matplotlib的colors方法
图片最好以白色为底,图里面是什么形状,词云就是什么形状
图是我用word写的艺术字,再用截图工具截的
img = Image.open(path+r'\henu.jpg') #打开图片
img_array = np.array(img) #把图片变为数组格式
stopword=[''] #设置停止词,即不想出现的内容
设置词云参数
wc = WordCloud(
background_color='white',#背景颜色
width=1000, #词云长宽大小
height=800,
colormap=colormap, #词云字体颜色
mask=img_array, #设置背景图片
font_path=font, #字体格式文件路径
stopwords=stopword #不想出现的内容
)
绘图并导出词云
wc.generate_from_text(string)#绘图
plt.axis('off')#使用matplotlib可视化工具,设置不显示坐标轴
plt.show() #显示图片
wc.to_file(path+r'\test.jpg') #保存到当前文件
效果