使用Python中wordcloud庫繪制詞云圖的詳細教程
前言
詞云圖(Word Cloud)是數(shù)據(jù)可視化中常用的一種技術(shù),通過將文字以不同的大小、顏色和方向排列,以展示文本數(shù)據(jù)中詞匯的頻次和重要性。對于文本分析、情感分析、關(guān)鍵詞提取等應(yīng)用,詞云圖都能夠直觀地展現(xiàn)信息。本文將詳細介紹如何使用 Python 中的 wordcloud 庫從 Excel 數(shù)據(jù)繪制詞云圖,幫助您快速上手詞云圖的生成和定制化。
一、環(huán)境準(zhǔn)備
在開始之前,請確保您的開發(fā)環(huán)境中已經(jīng)安裝了以下庫:
pip install wordcloud pandas matplotlib openpyxl
- wordcloud:用于生成詞云圖。
- pandas:處理 Excel 文件中的詞頻數(shù)據(jù)。
- matplotlib:用于展示和保存詞云圖。
- openpyxl:讀取 Excel 文件。
二、詞云圖的基本原理
詞云圖的生成主要基于詞匯的頻數(shù),頻數(shù)越高的詞匯在圖中的字號越大。在 Python 中,wordcloud 庫提供了多種自定義選項,例如字體、顏色、形狀、最大詞數(shù)等。接下來,我們將基于一個簡單的 Excel 詞頻表格,逐步實現(xiàn)從數(shù)據(jù)加載到詞云圖繪制的過程。
1.步驟一:讀取 Excel 文件
首先,使用 pandas 讀取 Excel 文件,并確保將詞匯和對應(yīng)的頻數(shù)提取出來。假設(shè) Excel 文件包含兩列:詞匯 和 頻數(shù)。
import pandas as pd # 讀取 Excel 文件 df = pd.read_excel('詞匯頻數(shù)表.xlsx') # 確保數(shù)據(jù)按需加載 words = df['詞匯'].values frequencies = df['頻數(shù)'].values # 將詞匯和頻數(shù)組合成字典 word_freq = dict(zip(words, frequencies))
此時,word_freq 字典包含了詞匯和它們對應(yīng)的頻數(shù),格式如:{‘詞匯1’: 10, ‘詞匯2’: 15, …}。
2.步驟二:生成詞云圖
接下來,我們利用 wordcloud 庫生成詞云圖。可以根據(jù)實際需求自定義詞云圖的顯示樣式。
from wordcloud import WordCloud import matplotlib.pyplot as plt # 創(chuàng)建詞云對象 wordcloud = WordCloud( font_path='simhei.ttf', # 設(shè)置字體路徑,確保中文顯示 background_color='white', # 背景色 width=800, # 圖像寬度 height=400, # 圖像高度 max_words=200, # 最大詞匯數(shù) max_font_size=100, # 最大字體大小 colormap='viridis' # 顏色方案 ).generate_from_frequencies(word_freq) # 繪制并展示詞云圖 plt.figure(figsize=(10, 5)) plt.imshow(wordcloud, interpolation='bilinear') plt.axis('off') # 關(guān)閉坐標(biāo)軸 plt.show()
參數(shù)說明
- font_path:指定字體文件路徑,這里使用了 “simhei.ttf” 以確保中文能夠正確顯示。
- background_color:設(shè)置背景顏色,可選值包括 black, white, gray 等。
- width 和 height:控制詞云圖的尺寸。
- max_words:控制詞云圖中顯示的最大詞匯數(shù)。
- max_font_size:控制最大字體的字號。
- colormap:控制顏色映射方案,支持多種內(nèi)置方案如 viridis, plasma, inferno 等。
3.步驟三:保存詞云圖
繪制完成后,您可以將詞云圖保存為圖片文件,便于分享和展示。
# 保存詞云圖到文件 wordcloud.to_file('wordcloud.png')
一般在該步驟就已經(jīng)結(jié)束啦~
4.步驟四:高級自定義(形狀與顏色)
(1)自定義形狀詞云圖不僅可以是矩形,還可以根據(jù)特定的形狀生成。例如,將詞云限制在一張圖片的輪廓內(nèi)。您可以通過以下方法實現(xiàn):
from PIL import Image import numpy as np # 加載形狀模板圖片 mask = np.array(Image.open('mask.png')) # 生成帶有形狀的詞云 wordcloud = WordCloud( font_path='simhei.ttf', background_color='white', mask=mask, # 設(shè)置詞云形狀 contour_width=1, # 輪廓寬度 contour_color='black' # 輪廓顏色 ).generate_from_frequencies(word_freq) # 展示詞云圖 plt.figure(figsize=(10, 10)) plt.imshow(wordcloud, interpolation='bilinear') plt.axis('off') plt.show()
關(guān)鍵點講解
高清圖片作為 mask:
使用高分辨率的黑白圓形圖片,詞云的清晰度會顯著提升。白色部分將作為背景,黑色部分是生成詞云的區(qū)域。contour_width 和 contour_color 參數(shù):
設(shè)置輪廓寬度和顏色,可以讓詞云圖的形狀更加突出。調(diào)整 max_font_size 和 max_words:
通過控制詞匯數(shù)量和最大字體大小,確保詞云圖在形狀內(nèi)分布均勻且美觀。這是換了一個愛麗絲Alice的mask的詞云圖。
(2)自定義顏色如果想讓詞云中的詞匯顏色更加多樣,可以使用 ImageColorGenerator 從圖片中提取顏色:
from wordcloud import ImageColorGenerator # 基于模板圖片生成顏色 image_colors = ImageColorGenerator(mask) # 繪制詞云圖并應(yīng)用顏色 plt.figure(figsize=(10, 10)) plt.imshow(wordcloud.recolor(color_func=image_colors), interpolation='bilinear') plt.axis('off') plt.show()
三、常見問題與解決方案
1.中文亂碼問題:
使用 wordcloud 生成詞云時,若不指定中文字體,中文會顯示為方塊。解決方法是指定支持中文的字體,例如 “simhei.ttf”。
2.詞云生成不均勻:
嘗試調(diào)整 max_font_size 和 mask 參數(shù),使詞云分布更為美觀。
四、總結(jié)
本文詳細介紹了如何從 Excel 表格生成詞云圖,并通過實例展示了詞云圖的自定義生成方法。詞云圖作為一種直觀的數(shù)據(jù)可視化手段,在文本分析中有著廣泛應(yīng)用??梢栽俳Y(jié)合深度學(xué)習(xí)的自然語言處理技術(shù),詞云圖可以進一步擴展用于更復(fù)雜的文本挖掘場景。
到此這篇關(guān)于使用Python中wordcloud庫繪制詞云圖的文章就介紹到這了,更多相關(guān)Python繪制詞云圖內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
10個使用Python必須知道的內(nèi)置函數(shù)
這篇文章小編主要向大家介紹的是10個使用Python必須知道的內(nèi)置函數(shù)reduce()、split()、map()等,更多后置函數(shù)請看下文2021-09-09向量化操作改進數(shù)據(jù)分析工作流的Pandas?Numpy示例分析
這篇文章主要介紹了向量化操作改進數(shù)據(jù)分析工作流的Pandas?Numpy示例分析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2023-10-10