wordcloud:轻松搞定词云图
大家好,欢迎来到 Crossin 的编程教室。
在数据可视化的世界里,词云(Word Cloud)是最能先声夺人的工具。无论是分析年度报告,还是复盘热搜话题,一张精美的词云图总能瞬间抓牢读者的眼球。今天我们用 Python 中最经典的 wordcloud 库,带你轻松解锁这项技能。
1. 准备工作
首先安装核心工具。除了生成词云的 wordcloud,我们还需要 jieba(中文分词)和 matplotlib(绘图展示)。
pip install wordcloud jieba matplotlib
2. 快速上手
中文与英文不同,单词间没有空格。我们需要先用 jieba 拆词,再交给 wordcloud。注意: 必须指定系统字体路径(如微软雅黑)以防止中文乱码。
import jiebafrom wordcloud import WordCloudimport matplotlib.pyplot as plt# 1. 准备文本,可从文件读入text = "Python可视化非常强大,词云工具wordcloud是经典之选。数据分析、人工智能。"# 2. 中文分词并用空格连接words = " ".join(jieba.lcut(text)) # 中文分词# 3. 生成词云wc = WordCloud(font_path='msyh.ttc', # Windows常用字体,Mac可用 STHeiti Light.ttcwidth=800, height=400,background_color='white').generate(words)# 4. 展示与保存plt.imshow(wc, interpolation='bilinear')plt.axis('off')plt.show()

3. 定制形状
矩形太单调?我们可以通过 Mask(蒙版) 功能,让词云填满任何形状。你只需准备一张白底黑图(如心形、猫咪)。
import numpy as npfrom PIL import Imagemask_img = np.array(Image.open("heart.png")) # 加载形状图wc = WordCloud(font_path='msyh.ttc',mask=mask_img,contour_width=1,contour_color='steelblue').generate(words)

4. 更多用法
过滤无意义词汇(Stopwords)
如果词云里全是“的”、“了”、“是”,会显得很不专业。我们可以自定义一个停用词表。
from wordcloud import STOPWORDSstopwords = set(STOPWORDS)stopwords.update(["的", "了", "是"]) # 增加中文干扰词wc = WordCloud(font_path='msyh.ttc', stopwords=stopwords).generate(words)
基于词频精确绘图
如果你已经统计好了词频字典,或者对生成的词语大小不满意,可以手动设置。
frequencies = {'Python': 100, '数据分析': 80}wc = WordCloud(font_path='msyh.ttc').generate_from_frequencies(frequencies)
解决图片模糊问题
通过 scale 参数放大渲染倍数,生成的图片会清晰很多,适合打印或高清展示。
# scale=2 表示像素放大两倍wc = WordCloud(font_path='msyh.ttc', width=400, height=200, scale=2).generate(words)
结语
词云是艺术与数据的结合。当你把枯燥的文本变成有张力的视觉图时,数据就有了灵魂。
今日挑战:动手试一下,做一张你最爱电影的影评词云吧!
如果本文对你有帮助,欢迎点赞、评论、转发。你们的支持是我更新的动力~

夜雨聆风