Python词云绘制
- 效果展示以及准备工作:
- 进入代码书写
效果展示以及准备工作:
效果展示图:
准备工作
- pycharm安装第三方库numpy,jieba,wordcloud
- 词云文本的准备(.txt)
- 背景图的准备(我是用的PS)
利用pycharm安装第三方库的讲解:
(个人感觉比在终端pip下载更方便)
背景图准备
- 百度随便找一张
- 利用PS把背景调成纯白色,其人物图形涂改为其他任意纯色
如下:
进入代码书写
首先把其文本和背景图片放入该Python文件中
思路:
- 打开文本
- 利用正则对其进行特殊符号删除
- 利用jieba对其文本进行分词
- 统计词语的出现次数,并sorted排序
- 利用字典,del过滤不想要的词
- 最后利用wordcloud库进行词云制作
调用的库操作
import string
import jieba
import numpy as np
from PIL import Image
from matplotlib import colors
import re
import matplotlib.pyplot as plt
from wordcloud import WordCloud
文件操作
mask=np.array(Image.open('1.png')) # 导入图片
txt=open(r'新时代中国特色社会主义.txt',mode='r',encoding="utf-8")
#打开文本,编码格式为utf-8
txt1=txt.read()#原始文本
txt2=re.sub(r'[^\u4e00-\u9fa5]','',txt1)
# 利用正则,删除特殊符号
txt3=jieba.cut(txt2)#可迭代对象 分词
txt4={}
for i in txt3:
if i not in txt4:
txt4[i]=1
else:
txt4[i]+=1
txt5=sorted(txt4.items(),key=lambda x:x[0],reverse=True)
# 统计词语出现次数,并排序
txt6={}
for word,count in txt5:
txt6[word]=count
list=["的","是","和"]# 过滤器
for i in list:
del txt6[i]
wordcloud
wordcloud=WordCloud(
background_color='white',#背景
font_path='simsun.ttc',#字体
max_words=400,#最大数量
mask=mask,
max_font_size=90,#最大字号
width=400,#宽
height=400,#高
).generate_from_frequencies(txt6)
plt.figure(figsize=(8,8))
plt.imshow(wordcloud,interpolation='bilinear')
plt.axis('off')#关闭坐标轴
plt.show()
wordcloud.to_file('词云.png')
之后就可以正常制作词云了