天天看點

4行代碼搞定個性化詞雲圖繪制!

話不多說,直接上代碼!

import jieba,wordcloud,imageio #導入jieba中文分詞庫、詞雲生成庫、導入圖檔接口庫
w=wordcloud.WordCloud(font_path='msyh.ttc',width=1000,height=700,background_color='lightpink',max_words=200,mask=imageio.imread('map1.png')) #配置詞雲對象的基本參數 #導入背景圖檔
w.generate(' '.join(jieba.lcut(open("陪你朝朝暮暮.txt","r",encoding="ANSI").read())))#向wordcloud的w對象中導入文本
w.to_file('ciyun.png')#儲存生成的詞雲圖檔
           

就是這樣短短4行代碼,快準狠!

再來看看效果:

4行代碼搞定個性化詞雲圖繪制!

那麼,為什麼短短4行python代碼就能制作出這樣的效果?

背景介紹

1.詞雲

詞雲圖即文字雲,是對文本資料中的高頻關鍵詞進行可視化的操作,生成一張類似雲朵的文字圖形,從中會過濾掉大量的文本資訊,以文字大小展現文本出現的頻率,給使用者耳目一新之感。

通俗地說就是講文章中的高頻詞彙統計出來,再制作成一張可視化的圖檔。

2.準備工作

這裡筆者首先向朋友要來了一本名叫《陪你朝朝暮暮》的小說,當然,這裡最好是準備.txt格式的文檔,其次在網上收集了一張世界地圖(這裡使用的是.png格式的圖檔)。

當然,這裡的文本檔案及圖檔檔案均可以使用網絡爬取的方式擷取,為了突出标題的作用,筆者自然是使用本地檔案了hia ~ hia ~ hia~

3.設計思路
  1. 導入生态庫
  2. 擷取本地圖檔及檔案
  3. 配置詞雲對象
  4. 儲存詞雲圖檔

代碼解析

1.導庫

import jieba 
import wordcloud 
import imageio 
           

import jieba

#導入jieba中文分詞庫,

jieba

庫是一個十分優秀的中文詞彙分詞工具,其會根據中文使用習慣将長文本切分成一個個我們熟知的詞語。由于

wordcloud

庫預設不能進行中文詞彙,是以jieba專為中文分詞而生。

jieba.lcut()

方法用來切分文本,預設采用精确比對模式(模糊模式對本案例不适用,不多贅述)

import wordcloud

#導入詞雲生成庫,

wordcloud

庫能夠将文本資訊以圖檔形式展現,本案例将wordcloud的WordCloud對象用于儲存文本資訊并加以配置其屬性,詳細配置過程見下文分解。

import imageio

#導入圖檔接口庫,

imageio

庫提供了很多

圖檔接口

,可用于讀取網絡圖檔資訊,視訊以及GIF檔案。筆者常用

imageio

庫來制作GIF圖檔(當然更多的是制作表情包!)

本案例使用imread導入事先準備好的

世界地圖

(此圖檔筆者建議白色背景),

mask=imageio.imread('map1.png')

#導入背景圖檔。如果圖檔和文本檔案存儲位置不在目前檔案路徑下,需要給定檔案路徑。

2.配置詞雲

mask=imageio.imread('map1.png')

将導入的世界地圖作為詞雲的背景圖檔,導入到詞雲對象中。

max_words=200

設定詞雲中最大文字的大小,也可以使用

min_words

來設定最小文字。

background_color='lightpink'

設定詞雲背景顔色

width=1000,height=700

設定詞雲圖檔的大小

font_path='msyh.ttc'

設定詞雲中文字的字型樣式,這裡采用的是微軟雅黑。

3.導入文本

open().read()

打開并讀取檔案,需要在open()中指定檔案位置及編碼模式,常用編碼模式為

utf-8

,在Windows中,檔案默然會儲存為

ANSI

編碼。

打開之後還應該使用.close()将檔案關閉,否則檔案将保持打開狀态。

打開之後文本資訊會被儲存為清單,此時使用

jieba.lcut()

将文本進行分詞,分詞之後是連續的,用

' '.join()

可以在分詞之間加上空格,最後全部通過。

generate()

導入到WordCloud對象中。

4.儲存圖檔

w.to_file('ciyun.png')

#儲存生成的詞雲圖檔,此時就能看到一張名為ciyun.png的圖檔了。

4行代碼搞定個性化詞雲圖繪制!