環(huán)境及模塊:
Win7 64位 Python 3.6.4 WordCloud 1.5.0 Pillow 5.0.0 Jieba 0.39目標:
繪制安徽省2018年某些科技項目的詞云,直觀展示熱點。
思路:
先提取項目的名稱,再用Jieba分詞后提取詞匯;過濾掉“研發(fā)”、“系列”等無意義的詞;最后用WordCloud 繪制詞云。
擴展:
詞云默認是矩形的,本代碼采用圖片作為蒙版,產(chǎn)生異形詞云圖。這里用的圖片是安徽省地圖。
秘笈:
用網(wǎng)上的常規(guī)方法繪制的詞云,字體有點模糊,秘笈在最后點明。
正式開始,Show you the code:
import numpy as npfrom PIL import Imageimport reimport jiebafrom wordcloud import WordCloud,ImageColorGenerator,STOPWORDSimport matplotlib.pyplot as plt# http://www.cnblogs.com/hatemath/# 打開存放項目名稱的txt文件with open('content.txt','r',encoding='utf-8') as f: word= (f.read()) f.close()# 圖片模板和字體image=np.array(Image.open('ditu.jpg')) font=r'C://Windows//fonts//msyh.ttf' # 去掉英文,保留中文 resultword=re.sub("[A-Za-z0-9/[/`/~/!/@/#/$/^/&/*/(/)/=/|/{/}/'/:/;/'/,/[/]/./</>///?/~/。/@/#///&/*/%]", "",word) wordlist_after_jieba = jieba.cut(resultword) wl_space_split = " ".join(wordlist_after_jieba) # 設置停用詞 sw = set(STOPWORDS) sw.add("研發(fā)")sw.add("系列")sw.add("這里不多寫了,根據(jù)自己情況添加")# 關鍵一步my_wordcloud = WordCloud(scale=4,font_path=font,mask=image,stopwords=sw,background_color='white', max_words = 100,max_font_size = 60,random_state=20).generate(wl_space_split) #顯示生成的詞云 plt.imshow(my_wordcloud)plt.axis("off") plt.show() #保存生成的圖片my_wordcloud.to_file('result.jpg')其中 ditu.jpg 為安徽省輪廓圖片:

運行結果:

可以看到,智能設備、施工工法、系統(tǒng)平臺、電纜、機器人等都是出現(xiàn)較多的詞匯。
最后是秘笈揭曉時間:
為什么我這張圖如此清晰?打開原圖可以看到,這圖的分辨率是1800*2500。你用網(wǎng)上的大多數(shù)代碼,最后生成的圖,尺寸很小,上面字跡邊緣模糊。
關鍵在于調(diào)用WordCloud時的一個參數(shù),回放一下代碼:
# 關鍵一步my_wordcloud = WordCloud(scale=4,font_path=font,mask=image,stopwords=sw,background_color='white',max_words = 100,max_font_size = 60,random_state=20).generate(wl_space_split)
第一個參數(shù)我寫的是 scale=4,這個數(shù)值越大,產(chǎn)生的圖片分辨率越高,字跡越清晰。你可以調(diào)到64試試,我希望你的電腦足夠快 /笑哭
以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持武林站長站。
新聞熱點
疑難解答