之前看博客上总有人抓某个网站,然后做一张炫酷的词频统计图。虽然知道有现成的库,但是一直没机会实践。这次刚好试验一下,比较简单。
#-*- encoding:utf-8 -*- import matplotlib.pyplot as plt import jieba from wordcloud import WordCloud import collections #1.读出歌词 text = open('./words.txt','r').read() #2.把歌词剪开 cut_text = jieba.cut(text) # print(type(cut_text)) # print(next(cut_text)) # print(next(cut_text)) #3.以空格拼接起来 remove_words = [u'的', u',',u'和', u'是', u'随着', u'对于', u'对',u'等',u'能', \ u'都',u'。',u' ',u'、',u'中',u'在',u'了',u'通常',u'如果',u'我',u'需要',u'自己',\ u'你',u'人',u'不',u'就',u'有',u'一个',u'也',u'而是',u'只是',u'可以',u'不要', \ u'还是',u'不能',u'所有',u'那些',u'不会',u'那么',u'因为',u'只有',u'那些',u'也'] filter_words = [u'的', u'是',u'那', u'不'] object_list = [] #过滤词 for word in cut_text : if len(word) <= 1: continue flag = True if word not in remove_words: # 如果不在去除词库中 for tmp_filter in filter_words : if word.find(tmp_filter) != -1 : flag = False break; if flag: object_list.append(word) word_counts = collections.Counter(object_list) # 对分词做词频统计 word_counts_top = word_counts.most_common(50) # 获取前10最高频的词 print word_counts_top # print(result) # 4.生成词云 wc = WordCloud( font_path='./YC.ttf', #字体路径 background_color='white', #背景颜色 width=1000, height=600, max_font_size=50, #字体大小 min_font_size=10, #mask=plt.imread('xin.jpg'), #背景图片 max_words=50 ) wc.generate_from_frequencies(word_counts) wc.to_file('fin.png') #图片保存 #5.显示图片 plt.figure('jielun') #图片显示的名字 plt.imshow(wc) plt.axis('off') #关闭坐标 plt.show()
这里可以设置背景图片和字体格式。对于中文,一定要有ttf字体文件。我随便从github上找了一种字体。
亲测可用!