用Python怎麼生成詞雲圖呢? 網上有很多教程,這裏給大家介紹一種比較簡單易懂的方式方法。
首先請自主下載worldcloud, jieba, imagio三個庫。
如何有效下載詳見:https://blog.csdn.net/andyleo0111/article/details/104532885
一. worldcloud庫
1. 從字面意思來看我們就能知道,worldcloud(詞雲)是製作詞雲的核心庫,也是必不可少的一個庫。
2. WordCloud對象創建的常用參數。
3. WordCloud類的常用方法
1) generate(text): 由text文本生成詞雲
2) to_file(filename) : 將詞雲圖保存爲名爲filename的文件
二. jieba庫
三. imageio
imagio庫是用來指定詞雲的填充形狀的一個庫,可以將詞雲設置成我們自己想要的形狀。
實戰演練
1. 生成一個普通的,英文的詞雲圖。
# 導入 worldcloud庫
import wordcloud
# 使用wordcloud庫下的WordCloud類並設置參數
# 設置背景顏色爲白色
a = wordcloud.WordCloud(background_color = 'white',\
# 設置字體爲'msyh.ttc',也就是微軟雅黑字體
font_path = 'msyh.ttc',\
# 設置寬度爲2000像素
width = 2000,\
# 設置高度爲1500像素
height = 1500,\
# 設置最大詞數爲50詞; # generate,根據字符串生成詞雲
max_words = 50).generate('My house is perfect. \
By great good fortune I have found a housekeeper \
light-footed woman of discreet age, strong and deft enough \
to render me all the service I require, and not \
She rises very early. By my breakfast-time there \
remains little to be done under the roof save dress\
Very rarely do I hear even a clink of crockery; never\
Oh, blessed silence! My house is perfect. \
Just large enough to allow the grace of order in domestic')
# 將生成的詞雲存爲英文狀態下的詞雲的文件
a.to_file('英文狀態下的詞雲.jpg')
注意: \爲轉義字符,這裏的作用是將轉行的字符鏈接起來。
生成的詞云爲:
2. 生成一箇中文內容的詞雲,這裏我以txt文件展示。
這是一個名爲“中國”的txt文件下面我們將它生成一個詞雲
特別注意:由於中文文本中的單詞不是通過空格或者標點符號分割,首先需要進行分詞處理,把一個句子劃分成一個個中文詞彙。
# 導入jieba庫,進行分詞處理
import jieba
# 打開文件
with open('中國.text', 'r+', encoding = 'gbk') as file:
text = file.read() # 讀取文件內容
word001 = jieba.lcut(text) # 將文本進行分詞處理
word002 = " ".join(word) # 將分好的詞通過空格連接
file.truncate() # 清空文件原內容
file.write(word002) # 寫入分好詞的內容
file.close() # 關閉文件
分詞處理好的內容爲:
下面用分好詞的內容生成詞雲,方法同上
import wordcloud
a = wordcloud.WordCloud(background_color = 'white',\
font_path = 'msyh.ttc',\
width = 2000,\
height = 1500,\
max_words = 50).generate(file)
a.to_file('中文狀態下的詞雲.jpg')
# 注意添加文件的路徑,爲避免出錯,可以再次打開file文件並選擇read讀入
生成的詞雲圖如下:
2. 生成一個指定形狀的的詞雲。
首先了解一下scipy.misc 和imageio的區別和聯繫
大家在一些教程上可能會看到scipy.misc的imread方法。但是現在使用這種方法並不能生成指定形狀的詞雲,原因是:這個方法被廢除了,現在只能通過imageio模塊來調用,即from imageio import imread.
此外,一定要注意所選擇的背景圖片一定要輪廓清晰,背景最好爲純白色或沒有顏色填充(也就是Ps扣過的圖片),這樣生成的效果最好。
下面,我分別以這兩張圖片進行填充處理
因爲方法一樣,我就只寫一個代碼了。
import wordcloud
from imageio import imread
image = imread(r'C:\Users\Y520\Desktop\map.jpg')
with open(r'C:\Users\Y520\Desktop\中國.txt','r') as file:
text = file.read()
wd = wordcloud.WordCloud(background_color= 'white',\
font_path = 'msyh.ttc',\
width = 2000,\
height = 1500,\
mask = image,\
max_words = 150).generate(text)
wd.to_file('China_Map.jpg')
生成的圖片爲: