使用Python中wordcloud庫繪制詞云圖的詳細(xì)教程
前言
詞云圖(Word Cloud)是數(shù)據(jù)可視化中常用的一種技術(shù),通過將文字以不同的大小、顏色和方向排列,以展示文本數(shù)據(jù)中詞匯的頻次和重要性。對(duì)于文本分析、情感分析、關(guān)鍵詞提取等應(yīng)用,詞云圖都能夠直觀地展現(xiàn)信息。本文將詳細(xì)介紹如何使用 Python 中的 wordcloud 庫從 Excel 數(shù)據(jù)繪制詞云圖,幫助您快速上手詞云圖的生成和定制化。
一、環(huán)境準(zhǔn)備
在開始之前,請(qǐng)確保您的開發(fā)環(huán)境中已經(jīng)安裝了以下庫:
pip install wordcloud pandas matplotlib openpyxl
- wordcloud:用于生成詞云圖。
- pandas:處理 Excel 文件中的詞頻數(shù)據(jù)。
- matplotlib:用于展示和保存詞云圖。
- openpyxl:讀取 Excel 文件。
二、詞云圖的基本原理
詞云圖的生成主要基于詞匯的頻數(shù),頻數(shù)越高的詞匯在圖中的字號(hào)越大。在 Python 中,wordcloud 庫提供了多種自定義選項(xiàng),例如字體、顏色、形狀、最大詞數(shù)等。接下來,我們將基于一個(gè)簡單的 Excel 詞頻表格,逐步實(shí)現(xiàn)從數(shù)據(jù)加載到詞云圖繪制的過程。
1.步驟一:讀取 Excel 文件
首先,使用 pandas 讀取 Excel 文件,并確保將詞匯和對(duì)應(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))
此時(shí),word_freq 字典包含了詞匯和它們對(duì)應(yīng)的頻數(shù),格式如:{‘詞匯1’: 10, ‘詞匯2’: 15, …}。
2.步驟二:生成詞云圖
接下來,我們利用 wordcloud 庫生成詞云圖??梢愿鶕?jù)實(shí)際需求自定義詞云圖的顯示樣式。
from wordcloud import WordCloud
import matplotlib.pyplot as plt
# 創(chuàng)建詞云對(duì)象
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:控制最大字體的字號(hào)。
- colormap:控制顏色映射方案,支持多種內(nèi)置方案如 viridis, plasma, inferno 等。
3.步驟三:保存詞云圖
繪制完成后,您可以將詞云圖保存為圖片文件,便于分享和展示。
# 保存詞云圖到文件
wordcloud.to_file('wordcloud.png')
一般在該步驟就已經(jīng)結(jié)束啦~
4.步驟四:高級(jí)自定義(形狀與顏色)
(1)自定義形狀詞云圖不僅可以是矩形,還可以根據(jù)特定的形狀生成。例如,將詞云限制在一張圖片的輪廓內(nèi)。您可以通過以下方法實(shí)現(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)鍵點(diǎn)講解
高清圖片作為 mask:
使用高分辨率的黑白圓形圖片,詞云的清晰度會(huì)顯著提升。白色部分將作為背景,黑色部分是生成詞云的區(qū)域。contour_width 和 contour_color 參數(shù):
設(shè)置輪廓寬度和顏色,可以讓詞云圖的形狀更加突出。調(diào)整 max_font_size 和 max_words:
通過控制詞匯數(shù)量和最大字體大小,確保詞云圖在形狀內(nèi)分布均勻且美觀。
這是換了一個(gè)愛麗絲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 生成詞云時(shí),若不指定中文字體,中文會(huì)顯示為方塊。解決方法是指定支持中文的字體,例如 “simhei.ttf”。
2.詞云生成不均勻:
嘗試調(diào)整 max_font_size 和 mask 參數(shù),使詞云分布更為美觀。
四、總結(jié)
本文詳細(xì)介紹了如何從 Excel 表格生成詞云圖,并通過實(shí)例展示了詞云圖的自定義生成方法。詞云圖作為一種直觀的數(shù)據(jù)可視化手段,在文本分析中有著廣泛應(yīng)用??梢栽俳Y(jié)合深度學(xué)習(xí)的自然語言處理技術(shù),詞云圖可以進(jìn)一步擴(kuò)展用于更復(fù)雜的文本挖掘場景。
到此這篇關(guān)于使用Python中wordcloud庫繪制詞云圖的文章就介紹到這了,更多相關(guān)Python繪制詞云圖內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
10個(gè)使用Python必須知道的內(nèi)置函數(shù)
這篇文章小編主要向大家介紹的是10個(gè)使用Python必須知道的內(nèi)置函數(shù)reduce()、split()、map()等,更多后置函數(shù)請(qǐng)看下文2021-09-09
用Python實(shí)現(xiàn)最速下降法求極值的方法
今天小編就為大家分享一篇用Python實(shí)現(xiàn)最速下降法求極值的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2019-07-07
python使用datetime模塊計(jì)算各種時(shí)間間隔的方法
這篇文章主要介紹了python使用datetime模塊計(jì)算各種時(shí)間間隔的方法,實(shí)例分析了Python使用datetime模塊進(jìn)行各種常用的時(shí)間操作技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-03-03
python 對(duì)多個(gè)csv文件分別進(jìn)行處理的方法
今天小編就為大家分享一篇python 對(duì)多個(gè)csv文件分別進(jìn)行處理的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2019-01-01
向量化操作改進(jìn)數(shù)據(jù)分析工作流的Pandas?Numpy示例分析
這篇文章主要介紹了向量化操作改進(jìn)數(shù)據(jù)分析工作流的Pandas?Numpy示例分析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-10-10

