本文展示如何用 Python 從之前生成的詞頻 Excel 文件中讀取詞頻數據,結合 wordcloud
和背景圖,批量生成直觀美觀的詞云圖。適用于文本分析、內容展示、報告可視化等場景。
📂 第一步:讀取所有 Excel 詞頻文件
import os
from openpyxl import load_workbook
import numpy as np
from PIL import Image
import wordcloud
import matplotlib.pyplot as pltpath = '詞頻'
files = [os.path.join(path, f) for f in os.listdir(path)]
maskImage = np.array(Image.open('background.png'))
-
利用
os.listdir()
遍歷詞頻 Excel 文件; -
使用
background.png
作為詞云背景形狀。
📈 第二步:逐文件讀取詞頻并生成詞云
for file in files:wb = load_workbook(file)ws = wb.activewordFreq = {ws[f"A{i}"].value: ws[f"B{i}"].valuefor i in range(2, ws.max_row + 1)}
將每張 Excel 轉為 dict[word] = freq
,為下一步驟做準備。
🖌 第三步:用 mask 圖生成詞云并保存
wc = wordcloud.WordCloud(font_path='C:/Windows/Fonts/simhei.ttf',mask=maskImage,max_words=500,max_font_size=100)wc.generate_from_frequencies(wordFreq)basename = os.path.splitext(os.path.basename(file))[0][:4]wc.to_file(f"詞云圖/{basename}.png")plt.imshow(wc)plt.axis('off')plt.show()
-
generate_from_frequencies()
直接基于詞頻生成詞云,是推薦方式 Kaggle+15Medium+15topcoder.com+15; -
傳入
maskImage
時詞云會按背景形狀生成 GitHub+1Medium+1; -
font_path
設置常用中文黑體避免亂碼; -
to_file()
將結果保存為 PNG,同時用matplotlib
展示。
🖼? 結果展示區
? 小結與注意事項
-
使用
generate_from_frequencies()
避免文本分詞誤差 holisticseo.digital; -
mask 圖需確保背景為白色(RGB 255),否則可能形狀識別失敗 Stack Overflow;
-
可以優化方式包括:
-
使用
ImageColorGenerator
從背景圖提取配色 GitHub+7peritract.github.io+7Stack Overflow+7; -
添加
contour_color
與contour_width
增加外輪廓; -
控制詞云尺寸、
scale
參數提升清晰度; -
自定義停詞集排除無用詞。
-
??更多實用案例,代碼,素材如下:
自取鏈接:https://pan.quark.cn/s/a46f30accea2
🔧 拓展建議
-
🎨 自定義顏色對特定主題關鍵詞加亮;
-
💾 批量處理大量文本并生成詞云合集;
-
📊 結合
wordcloud.to_image()
和 GUI 打包; -
📘 不僅限詞頻表,還可以直接用原文生成更靈活多彩的詞云。
通過這套流程,你已掌握從 Excel 到詞云圖的全鏈路自動化方法!如果你還想支持 PDF 特征提取詞云、生成 html 可嵌入圖像,或集成到報表系統里,歡迎繼續告訴我,我可以為你定制更深入的文章或腳本。
?
?
?
?
?