词云图的创作

词云图的制作需要导入词频统计库,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') #保存词云图

运行完代码后效果图

 

内容仅供学习,如有侵权请联系作者删除

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值