wordcloud库不支持自动按年份提取关键词,年度词云需先准备真实文本数据再渲染;必须指定中文字体路径(如simhei.ttf)避免乱码;中文须用jieba分词后拼空格字符串输入,否则因无空格被当单长词过滤;停用词、min_word_length等参数需手动配置。

WordCloud 库本身不支持直接按年份自动提取关键词,所谓“年度总结词云”本质是:你得先准备好这一年里你想可视化的真实文本数据,再用 WordCloud 渲染。别指望它读日历、爬微信聊天记录或自动归纳KPI——那是你自己的数据预处理责任。
怎么让词云只显示中文且不乱码
默认字体不支持中文,生成的词云全是方块或空心字。必须显式指定中文字体路径,否则 generate() 会静默失败或渲染异常。
- Windows 用户常用
"simhei.ttf"(黑体),路径一般在C:\Windows\Fonts\simhei.ttf;macOS 可试"/System/Library/Fonts/PingFang.ttc"或"/Library/Fonts/STHeiti Light.ttc" - 用
font_path参数传入,不是font_path写成font_path=就完事——路径必须存在,建议先用os.path.exists()检查 - 如果用 Jupyter,记得在
WordCloud初始化后加plt.imshow()+plt.axis("off"),否则可能只显示坐标轴不显示图
为什么我的词云空白或只有几个词
常见原因不是代码错,而是输入文本没清洗干净,或者分词逻辑缺失。
让 macOS 自动化像说话一样简单 —— 用代码控制你的 Mac,无需学习 AppleScript 系统要求 macOS 14+ (Sonoma) Python 3.9+ 需要开启:辅助功能 + 屏幕录制权限
-
WordCloud默认按空格切词,中文没有空格,所以整段中文会被当做一个超长“词”,直接被过滤(因长度超默认max_words=200或字符数限制) - 必须先用
jieba或pkuseg分词,再用" ".join()拼成带空格的字符串传给generate_from_text() - 停用词要自己加:用
stopwords=set(["的", "了", "和"])传给WordCloud(stopwords=...),别依赖库自带的英文停用词表 - 单字(如“我”“人”“好”)默认被忽略,如需保留,设
min_word_length=1
如何控制词频权重和视觉重点
WordCloud 的核心是词频,但你可以绕过原始计数,用 generate_from_frequencies() 直接喂字典,实现自定义加权。
- 比如年度总结里,“OKR完成率”比“会议”重要,可手动把前者频次设为 50,后者设为 5
- 词频字典 key 是字符串,value 是数字(支持 float),但注意 value 太小(如
- 想突出某几个关键词又不想改频次?用
collocations=False关闭二元词组合并,再配合regexp参数自定义切分规则(例如强制保留“Q3复盘”不被拆开) - 颜色太单调?传
colormap="plasma"或自定义函数,但注意 matplotlib colormap 名称要拼对,"viridis"不是"virdis"
真正卡住人的从来不是 WordCloud 的那一行 wc.generate(...),而是前面那几十行数据清洗、分词、去重、映射权重的逻辑——尤其当你从钉钉导出的 CSV 里混着时间戳、@人名、系统提示语的时候。
Python免费学习笔记(深入):立即使用
在学习笔记中,你将探索 Python 的核心概念和高级技巧!










