词云图的制作需要导入词频统计库,numpy数据处理库,结巴分词,词云展示库,图像展示库等,这些库都需要下载使用。
Windows+R代开cmd下载所需要的库
pip install collections # 词频统计库
pip install numpy # numpy数据处理库
pip install jieba # 结巴分词
pip install wordcloud # 词云展示库
pip install PIL # 图像处理库
pip install matplotlib # 图像展示库
pip install seaborn
词云图的制作相关代码
import collections # 词频统计库
import numpy as np # numpy数据处理库
import jieba # 结巴分词
import wordcloud # 词云展示库
from PIL import Image # 图像处理库
import matplotlib.pyplot as plt # 图像展示库
import seaborn as sns
#一、读取文件
fn = open('G:/python学习文件及相关插件/词云图制作/死亡病例病情介绍.txt','rt') #打开文件
string_data = fn.read() #读出整个文件
fn.close() #关闭文件
#二、文本分词
seg_list_exact = jieba.cut(string_data, cut_all = False) #精确模式分词
object_list = [] #创建一个列表用于封装词组
remove_words = [u'2020',u'患者',u'治疗',u'医院',u'XX',u'转入',
u'宣告',u'出现',u'20',u'入院',u'支持',u'22',u'收入',
u'18',u'10',u'13',u'就诊',u'12',u'金银',u'日因',
u'明显',u'17',u'21',u'15',u'23',u'既往',u'19',u'11',
u'报告',u'对症',u'进行性',u'给与'] # 自定义去除词库,部分没用的但是出现频率较高的词语手动去除
for word in seg_list_exact: # 循环读出每个分词
# if word not in remove_words: # 如果不在去除词库中
if len(word)>=2 and word not in remove_words: #这里筛选只要词语(字数大于二)并且不在自定义词库中的词组
object_list.append(word) # 分词追加到列表
#三、词频统计
word_counts = collections.Counter(object_list) #对分词做词频统计
word_counts_top40 = word_counts.most_common(40) #获取前40最高频的词
#print (word_counts_top40) #输出检查
#四、词频统计
x=[x[0] for x in word_counts_top40] #统计top40个关键字
y=[x[1] for x in word_counts_top40] #统计top40个关键字出现的次数
#横坐标字体竖排显示
label = []
for i in range(len(x)):
label_vertical = []
for j in range(len(x[i])):
label_vertical.append(x[i][j]+"\n")#每个中文加入换行符,实现竖排显示
label.append(''.join(label_vertical))#列表转换为字符串
# print(label)
sns.set(font_scale=2,font='SimHei',style='white') #设置字体大小、字体(这里是黑体)、图片背景色等
fig = plt.figure(figsize=(20,10))
plt.bar(label,y,color='black')
# plt.xticks(fontsize=20) #改变标签显示角度,防止标签重叠
plt.ylabel('词\n频\n(次)',rotation=360,labelpad=30) #设置Y轴名称,并让标签文字上下显示
#plt.show()
#五、词云图展示
mask = np.array(Image.open('G:/python学习文件及相关插件/词云图制作/病毒背景图.jpg')) # 定义词频背景
wc = wordcloud.WordCloud(
font_path='C:/Windows/Fonts/simhei.ttf', # 设置字体格式
margin=10, width=4000,height=6000,
mask=mask # 设置背景图
)
jieba.setLogLevel(jieba.logging.INFO) #解决(Building prefix dict from the default dictionary ...)报错问题
wc.generate_from_frequencies(word_counts) # 从字典生成词云
image_colors = wordcloud.ImageColorGenerator(mask) # 从背景图建立颜色方案
wc.recolor(color_func=image_colors) # 将词云颜色设置为背景图方案
plt.imshow(wc) # 显示词云
plt.axis('off') # 关闭坐标轴
#plt.show() # 显示图像
wc.to_file('死亡病例词云图.jpg') #保存词云图
运行完代码后效果图
内容仅供学习,如有侵权请联系作者删除