WordCloud 詞雲


 主要步驟:

  • 准備素材,可以是爬取的內容,也可以是手動輸入的內容,是字符串即可,這里是使用前面爬取並保存在本地excel的豆瓣top250榜單;
  • 使用jieba將字符串分詞,jieba.cut()會將我們的句子分詞一個個詞語;
  • 准備掩飾圖片,掩飾圖片就是詞雲顯示各個詞語的背景范圍,默認是矩形背景;
  • 將詞雲轉換成圖片輸出,同時保存圖片到本地,注意,先保存圖片之后再顯示圖片,互換順序有可能會出現保存空白圖的情況;

 

主要代碼:

# -*- coding = utf-8 -*-

# 詞雲
import wordcloud as wd # 分詞,支持中文
import jieba # 繪圖,數據可視化
from matplotlib import pyplot as plt # 矩陣運算
import numpy as np # 操作excel主要用到xlrd和xlwt這兩個庫,xlrd是讀excel,xlwt是寫excel
import xlrd # 圖片處理
from PIL import Image # 准備詞雲所需的數據,獲取excel數據,這里以第5列的電影名言(總結)為例
def get_data_excel(excel_path): # 打開excel,並創建excel對象
    excel = xlrd.open_workbook(excel_path) # 選擇excel中下標為0的工作表,就是excel文件中的第一個sheet表
    sheet = excel.sheets()[0] # 獲取第一行的內容, 索引從0開始
    # row = sheet.row_values(0)
    # 獲取第一列的整列的內容
    # col = sheet.col_values(0)
    # 獲取下標第0列,[0, 4)行數據,0~3行 (不包括第4行)
    # print(sheet.col_values(0, 0, 4))
    # 獲取下標第0行,[0, 5)列數據,0~4列 (不包括第5列)
    # print(sheet.row_values(0, 0, 5))
    # 獲取單個單元格數據,第幾行第幾個,索引從0開始
    # data = sheet.cell(2, 0).value

    # 獲取第5列的電影名言作為內容分析
    data_list = sheet.col_values(5) # 把第5列第一行的標題 "電影名言" 去掉
    data_list.remove('電影名言') # 打印查看獲取的內容
    # for data in data_list:
    # print(data, end='\n')

    # 將所有的名言連接成一個字符串,便於詞雲分析
    contents = ""
    for data in data_list: # 將內容添加到contents末尾
        contents += data # print(contents)

    return contents # 詞雲分析
def word_cloud(data): # 使用jieba.cut切分str句子
    word = jieba.cut(data) # 使用空格隔開,看看句子分詞的個數,以及其效果
    word_all = ' '.join(word) # print(f"The number of word is {len(word_all)}")
    # print(word_all)

    # 使用Image打開模板圖片

    # 打開樹形圖
    img_tree = Image.open('../Data/img/tree.jpg') # 將圖片的像素點轉換成矩陣數據
    tree_array = np.array(img_tree) # 打開哆啦A夢圖片
    img_love = Image.open('../Data/img/哆啦A夢.jpg') # 將圖片的像素點轉換成矩陣數據
    love_array = np.array(img_love) # 生成詞雲的對象,並設置格式
    tree = wd.WordCloud( # 設置詞雲的背景顏色,這里設置成白色
        background_color='white', # 掩飾背景,就是存放詞雲的背景區域,默認是矩形,以下三個測試背景選擇一個就好
        # mask=None,

        # 使用樹形圖作為背景
        mask=tree_array, # 使用哆啦A夢作為背景
        # mask=love_array,

        # 在C盤目錄下搜索 Fonts,選擇一個字體,右鍵查看屬性,復制常規項里面的 完整名稱
        # 設置字體,不然可能不支持中文,simsun.ttc是本機的宋體字體格式
        font_path='simsun.ttc' ) # 詞雲對象加入分析句子的來源
 tree.generate_from_text(word_all) # 設置圖片的名稱和尺寸
    plt.figure('電影詞雲', figsize=(9, 6)) # 設置不使用坐標軸
    plt.axis('off') # 將詞雲對象放入圖片中
 plt.imshow(tree) # 保存圖片,注意先savefig()再show(),否則保存的圖片可能一片空白,dpi是圖像每英寸長度內的像素點數
    plt.savefig('../Data/img/film.jpg', dpi=500) # 顯示圖片
 plt.show() # 主程序
def main(): # excel保存路徑
    excel_path = '../Data/excel/top250.xls'
    # 獲取excel數據
    data = get_data_excel(excel_path) # 詞雲分析
 word_cloud(data) # 主程序入口
if __name__ == '__main__': main()

使用默認生成詞雲

使用樹形掩飾

使用哆啦A夢掩飾

 

可能有些人跟我一樣也很喜歡哆啦A夢,所以一定要附上哆啦A夢的圖片

 

 

 

附上樹形底圖


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM