Python最簡單的方法生成詞雲圖

用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')

生成的圖片爲:

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章