更新時間:2019年01月08日 14:46:59 作者:HateMath歸來 這篇文章主要介紹了用Python和WordCloud繪制詞云的實現(xiàn)方法(內(nèi)附讓字體清晰的秘笈),文中通過示例代碼介紹的非常詳細(xì),,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧 環(huán)境及模塊: Win7 64位 Python 3.6.4 WordCloud 1.5.0 Pillow 5.0.0 Jieba 0.39
目標(biāo): 繪制安徽省2018年某些科技項目的詞云,直觀展示熱點,。 思路: 先提取項目的名稱,,再用Jieba分詞后提取詞匯;過濾掉“研發(fā)”,、“系列”等無意義的詞,;最后用WordCloud 繪制詞云。 擴展: 詞云默認(rèn)是矩形的,,本代碼采用圖片作為蒙版,,產(chǎn)生異形詞云圖。這里用的圖片是安徽省地圖,。 秘笈: 用網(wǎng)上的常規(guī)方法繪制的詞云,,字體有點模糊,秘笈在最后點明,。 正式開始,,Show you the code: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 | import numpy as np
from PIL import Image
import re
import jieba
from wordcloud import WordCloud,ImageColorGenerator,STOPWORDS
import matplotlib.pyplot as plt
# 打開存放項目名稱的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)
# 設(shè)置停用詞
sw = set (STOPWORDS)
sw.add( "研發(fā)" )
sw.add( "系列" )
sw.add( "這里不多寫了,,根據(jù)自己情況添加" )
# 關(guān)鍵一步
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 為安徽省輪廓圖片: 運行結(jié)果: 可以看到,智能設(shè)備,、施工工法,、系統(tǒng)平臺,、電纜、機器人等都是出現(xiàn)較多的詞匯,。 最后是秘笈揭曉時間: 為什么我這張圖如此清晰,?打開原圖可以看到,這圖的分辨率是1800*2500,。你用網(wǎng)上的大多數(shù)代碼,,最后生成的圖,尺寸很小,,上面字跡邊緣模糊,。 關(guān)鍵在于調(diào)用WordCloud時的一個參數(shù),回放一下代碼: 1 2 3 | # 關(guān)鍵一步
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)容,希望對大家的學(xué)習(xí)有所幫助,,也希望大家多多支持腳本之家,。
|