wordcloud词云分析及词频统计绘图

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Date    : 2017-10-18 17:52:25
# @Author  : awakeljw 
# @Link    : http://blog.csdn.net/awakeljw/
# @Version : $Id$


from wordcloud import WordCloud
import jieba
import PIL
import matplotlib.pyplot as plt
import numpy as np
from collections import Counter
import matplotlib
from pylab import mpl
mpl.rcParams['font.sans-serif'] = ['SentyTang'] # 指定默认字体
mpl.rcParams['axes.unicode_minus'] = False  
matplotlib.rc('xtick', labelsize=14)
matplotlib.rc('ytick', labelsize=14)
def wordcloudplot(txt):
    path='字体文件'
#    path=unicode(path, 'utf8').encode('gb18030')
    alice_mask = np.array(PIL.Image.open('图片文件'))
    wordcloud = WordCloud(font_path=path, 
                          background_color="white",   
                          margin=5, width=1800, height=800,mask=alice_mask,max_words=2000,max_font_size=60,random_state=42) 
    wordcloud = wordcloud.generate(txt)
    wordcloud.to_file('输出文件')
    plt.imshow(wordcloud)
    plt.axis("off")
    plt.show()

rem = [',','、','。','的','和','\u3000','图','串','“','”',' ','与','是','端','在','中','了','\n']    
def main():
    a=[]
    f=open(r'I:\tensorflow\ciyun\paper.txt','r',encoding='gb18030').read()
    words=list(jieba.cut(f))
    tongji = Counter(words).most_common(20)

    d = {key: value for (key, value) in tongji}  

    for i in list(d.keys()):
	    if i in rem:
		    d.pop(i) 
    print (d)
    label = list(d.keys())
    y = list(d.values())
    idx = np.arange(len(y))
    plt.barh(idx,y)
    plt.yticks(idx+0.4,label) 
    plt.xlabel('出现次数',fontsize = 20,labelpad = 5)
    plt.ylabel('关键词',fontsize= 20,labelpad = 5)
    plt.title('涡流发生器对激波串振荡的控制',fontsize= 25)
    plt.savefig('输出词频图标')
    #plt.show()
    #绘制pie chart on polar axis
    N = len(d)
    theta = np.arange(0.0, 2*np.pi,2*np.pi/N)
    radii = y
    width = np.pi/6
    ax = plt.subplot(111,projection='polar')
    bars = ax.bar(theta, radii, width = width, bottom = 0.0)
    plt.xticks(theta+np.pi/12,label)
    for r, bar in zip(radii, bars):
        bar.set_facecolor(plt.cm.viridis(r / 10.))
        bar.set_alpha(0.5)

    plt.savefig('输出pie极坐标图')
    plt.show()

    for word in words:
        if len(word)>1:
            a.append(word)
    txt=r' '.join(a)
    wordcloudplot(txt)#输出词云

if __name__=='__main__':
    main()

1.安装wordcloud,jieba
http://www.lfd.uci.edu/~gohlke/pythonlibs/#wordcloud下载对应的python版本,在cmd中输入pip install I:/wordcloud-1.3.2-cp35-cp35m-win_amd64.whl安装即可
jieba:pip install jieba
2.修改字体文件
找到python安装位置:C:\Anaconda3\Lib\site-packages\matplotlib\mpl-data\fonts\ttf添加自己下载的中文字体,
删除个人用户下的.matplotlib文件
3.添加字体文件和图片
4.更改代码中的文件和图片路径
5.运行调试
###结果展示
这里写图片描述
这里写图片描述
这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值