最近在忙考試的事情,沒什么時間敲代碼,一個月也沒幾天看代碼,最近看到可視化的詞雲,看到網上也很多這樣的工具,
但是都不怎么完美,有些不支持中文,有的中文詞頻統計得莫名其妙、有的不支持自定義形狀、所有的都不能自定義顏色
於是網上找了一下,決定用python繪制詞雲,主要用到的是wordcloud庫,安裝只需要pip isntall wordcloud就行,
數據用的是酒店評論的數據,代碼如下:
# -*- coding: utf-8 -*- import matplotlib.pyplot as plt import pickle from wordcloud import WordCloud,STOPWORDS,ImageColorGenerator import jieba # import codecs # fin = codecs.open('HotelComments.txt',mode = 'r', encoding = 'utf-8') # print fin.read() # 第一次運行程序時將分好的詞存入文件 # text = '' # with open('HotelComments.txt') as fin: # for line in fin.readlines(): # line = line.strip('\n') # text += ' '.join(jieba.cut(line)) # text += ' ' # fout = open('text.txt','wb') # pickle.dump(text,fout) # fout.close() # 直接從文件讀取數據 fr = open('text.txt','rb') text = pickle.load(fr) backgroud_Image = plt.imread('girl.jpg') wc = WordCloud( background_color = 'white', # 設置背景顏色 mask = backgroud_Image, # 設置背景圖片 max_words = 2000, # 設置最大現實的字數 stopwords = STOPWORDS, # 設置停用詞 font_path = 'C:/Users/Windows/fonts/msyh.ttf',# 設置字體格式,如不設置顯示不了中文 max_font_size = 50, # 設置字體最大值 random_state = 30, # 設置有多少種隨機生成狀態,即有多少種配色方案 ) wc.generate(text) image_colors = ImageColorGenerator(backgroud_Image) wc.recolor(color_func = image_colors) plt.imshow(wc) plt.axis('off') plt.show()
效果圖:
自定義詞雲形狀:
參考博客:
http://blog.csdn.net/tanzuozhev/article/details/50789226
http://blog.csdn.net/qq_16912257/article/details/52458515