用Python和WordCloud繪制詞云的實(shí)現(xiàn)方法(內(nèi)附讓字體清晰的秘笈)
環(huán)境及模塊:
- Win7 64位
- Python 3.6.4
- WordCloud 1.5.0
- Pillow 5.0.0
- Jieba 0.39
目標(biāo):
繪制安徽省2018年某些科技項(xiàng)目的詞云,直觀展示熱點(diǎn)。
思路:
先提取項(xiàng)目的名稱,再用Jieba分詞后提取詞匯;過(guò)濾掉“研發(fā)”、“系列”等無(wú)意義的詞;最后用WordCloud 繪制詞云。
擴(kuò)展:
詞云默認(rèn)是矩形的,本代碼采用圖片作為蒙版,產(chǎn)生異形詞云圖。這里用的圖片是安徽省地圖。
秘笈:
用網(wǎng)上的常規(guī)方法繪制的詞云,字體有點(diǎn)模糊,秘笈在最后點(diǎn)明。
正式開(kāi)始,Show you the code:
import numpy as np from PIL import Image import re import jieba from wordcloud import WordCloud,ImageColorGenerator,STOPWORDS import matplotlib.pyplot as plt # http://www.cnblogs.com/hatemath/ # 打開(kāi)存放項(xiàng)目名稱的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 為安徽省輪廓圖片:
運(yùn)行結(jié)果:
可以看到,智能設(shè)備、施工工法、系統(tǒng)平臺(tái)、電纜、機(jī)器人等都是出現(xiàn)較多的詞匯。
最后是秘笈揭曉時(shí)間:
為什么我這張圖如此清晰?打開(kāi)原圖可以看到,這圖的分辨率是1800*2500。你用網(wǎng)上的大多數(shù)代碼,最后生成的圖,尺寸很小,上面字跡邊緣模糊。
關(guān)鍵在于調(diào)用WordCloud時(shí)的一個(gè)參數(shù),回放一下代碼:
# 關(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)
第一個(gè)參數(shù)我寫的是 scale=4,這個(gè)數(shù)值越大,產(chǎn)生的圖片分辨率越高,字跡越清晰。你可以調(diào)到64試試,我希望你的電腦足夠快 /笑哭
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Python 調(diào)用 Outlook 發(fā)送郵件過(guò)程解析
這篇文章主要介紹了Python 調(diào)用 Outlook 發(fā)送郵件過(guò)程解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-08-08Pytorch實(shí)現(xiàn)ResNet網(wǎng)絡(luò)之Residual Block殘差塊
這篇文章主要為大家介紹了Pytorch實(shí)現(xiàn)ResNet網(wǎng)絡(luò)之Residual Block殘差塊實(shí)現(xiàn)示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-04-04python星號(hào)(*)和雙星號(hào)(**)?函數(shù)動(dòng)態(tài)參數(shù)匹配及解包操作方法
這篇文章主要介紹了python星號(hào)(*)和雙星號(hào)(**)?函數(shù)動(dòng)態(tài)參數(shù)匹配及解包操作,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2023-03-03python簡(jiǎn)單幾步獲取各種DOS命令顯示的內(nèi)容詳解流程
你會(huì)用python獲取各種DOS命令顯示的內(nèi)容核心嗎?說(shuō)的可不是返回值,是用system()函數(shù)調(diào)用windows操作系統(tǒng)的DOS命令來(lái)做點(diǎn)事情,需要的朋友可以參考下2021-10-10OpenCV物體跟蹤樹(shù)莓派視覺(jué)小車實(shí)現(xiàn)過(guò)程學(xué)習(xí)
這篇文章主要介紹了OpenCV物體跟蹤樹(shù)莓派視覺(jué)小車的實(shí)現(xiàn)過(guò)程學(xué)習(xí),有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步2021-10-10Python中創(chuàng)建數(shù)值列表的4種方法總結(jié)
在Python中列表(List)是一種有序、可變的數(shù)據(jù)類型,被廣泛用于存儲(chǔ)和處理多個(gè)元素,這篇文章主要給大家介紹了關(guān)于Python中創(chuàng)建數(shù)值列表的4種方法,需要的朋友可以參考下2024-05-05Python利用公共鍵如何對(duì)字典列表進(jìn)行排序詳解
這篇文章主要給大家介紹了關(guān)于Python利用公共鍵如何對(duì)字典列表進(jìn)行排序的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用python具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2018-05-05詳解python 3.6 安裝json 模塊(simplejson)
這篇文章主要介紹了python 3.6 安裝json 模塊(simplejson),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-04-04