jieba+pyecharts 词云图应用

   用python做绘图的时候,感觉用matplotllib的风格更偏向于国外人的,做出来的图的效果交互性不太好.用百度的开源库,pyecharts的时候发现了很多的惊喜.

具体可以参考http://pyecharts.org 去看使用说明

 

昨天看到一个朋友做论文设计,通过从大量文献中,抓取关键词,来判断这些文献每年侧重点变化情况.

基本情况如下:

1.有82篇相关的文献,每篇文献大概有400页,全部是docx格式的,文本内容.

2.要求从文献中统计出关键词,通过关键词来判断文献的侧重点

3.做可视化展示,显示各个关键词的频次

 

思路:

1.通过docx 模块来获取word文献中的内容,转成txt格式的文本

2.在txt文本文件中,用jieba的库来统计,各中文词出现的频次

3.用pyecharts模块绘制词云图来展示

 

1.  代码实现(前提,安装docx,和jieba模块)

from docx import Document
import jieba

doc = Document('xxxx.docx')  #读入文献


#循环读取文献中的段落文本,并通过追加模式写入到指定的txt文件中
for paragraph in doc.paragraphs:
     with open('xxx.txt','a') as f:
        f.write(paragraph.text)

 

2.紧接上面

#用jieba对文本内容进行词分
with open('xxx.txt','r') as f:
    txt = f.read()
    words = jieba.lcut(txt)
    counts={}

#通过遍历words的方式,统计出每个词出现的频次
for word in words:
    if len(word) == 1:
        continue
    else :
        counts[word] = counts.get(word,0) + 1

#转换成列表的方式,方便用于后面的pyecharts绘图
items = list(counts.items())
items.sort(key=lambda x:x[1],reverse=True)  #按照逆序的方式排序,因为items是列表中元组的方式呈现的,因此用了lambda函数x[1]来作为判断.

 

3.用pyecharts来绘制词云图

通过pyecharts的原型了解到,绘制词云图需要的配置

a.wordcloud = WordCloud()   #实例化类

b.wordcloud.add("",items[0:80],word_size_range[20:60])

c.wordcloud.set_global_opts(title_opts=opts.TitleOpts(title="xxx统计"))  此处可以忽略,如果要用的话,要 import pyecharts.options as opts.

d.wordcloud.render("xxx.html")    如果用的是jupyter_notebook写成  wordcloud.render_notebook()  就可以直接在jupyter中显示图形

pyecharts支持链式调用的,那样就可以省掉一些参数,但是直观性就会差一点.

 

wordcloud = WordCloud()
wordcloud.add("",items[0:60],word_size_range[20:80],shape= 'star)
wordcloud.render_notebook()

 add方法里面还有很多的参数,比如可以设置宽度,高度,云图的形状等,这些细节方面的,可以参考函数说明,国人开发的文档很好阅读和理解的.我这里用的是star  星型的图案

 

结果展示 :

 

posted @ 2021-02-20 17:37  另一个起点  阅读(408)  评论(0编辑  收藏  举报