制作词云图用python的wordcloud库即可,关键在于掌握参数设置和中文处理。步骤包括:1.安装库;2.加载文本并生成词云对象;3.显示或保存图片。中文支持需指定字体路径,并搭配jieba分词。自定义形状需导入遮罩图片,颜色可用colormap调整。其他技巧包括过滤停用词、限制最大词数、控制字体大小及保存图片。

制作词云图其实不难,用Python的话,最常用的就是 wordcloud 这个库。它功能强大、配置灵活,只要掌握了几个关键参数,就能做出漂亮的词云图。

安装和基本使用
首先得安装好库,可以用 pip 安装:
pip install wordcloud matplotlib
然后是基础代码结构,通常流程是:加载文本 → 生成词云对象 → 显示或保存图片。一个简单的例子如下:
立即学习“Python免费学习笔记(深入)”;

from wordcloud import WordCloudimport matplotlib.pyplot as plttext = open('your_text_file.txt').read()wordcloud = WordCloud(width=800, height=400, background_color='white').generate(text)plt.figure(figsize=(10,5))plt.imshow(wordcloud, interpolation='bilinear')plt.axis("off")plt.show()
这一步的关键在于确保文本格式正确,没有乱码。中文的话还需要设置字体,否则会显示方块。
中文支持怎么处理?
默认情况下,WordCloud 不支持中文字体,所以会出现乱码或者空白。解决方法很简单:指定中文字体路径。

比如这样:
wordcloud = WordCloud( font_path='/System/Library/Fonts/PingFang.ttc', # Mac系统示例路径 width=800, height=400, background_color='white').generate(text)
Windows 用户可以找系统的字体文件,比如 C:WindowsFontssimhei.ttf。如果不知道字体路径,可以在网上下载一个常用字体(如思源黑体)放到项目目录下直接引用。
另外,中文文本一般需要先做分词,不然会被当成连续字符处理。推荐搭配 jieba 使用:
import jiebatext = " ".join(jieba.cut(open('your_text_file.txt').read()))
如何自定义形状和颜色?
如果你不想只是矩形词云,还可以用自定义的遮罩形状。比如用一张心形图片作为轮廓:
需要用到 numpy 和 PIL 来读取图片:
import numpy as npfrom PIL import Imagemask = np.array(Image.open("heart_shape.png"))
然后把这个 mask 传给 WordCloud:
wordcloud = WordCloud( mask=mask, font_path='your_font_path', background_color="white", mode="RGBA" # 如果背景透明的话).generate(text)
颜色方面,默认是黑白,但你可以用 colormap 参数控制配色方案:
wordcloud = WordCloud(..., colormap='viridis')
也可以自己写一个函数来自定义颜色,更灵活。
常见问题和小技巧
停用词过滤:有些词太常见,比如“的”、“了”,可以用 stopwords 参数去掉。最大词数限制:默认显示最多200个词,想更多可以加 max_words=300。词频大小控制:用 max_font_size 和 min_font_size 调整显示范围。保存图片:最后记得用 wordcloud.to_file("output.png") 把结果保存下来。
基本上就这些。操作不算复杂,但有些细节容易忽略,比如字体路径、中文分词、遮罩格式等。把这些搞清楚后,就能做出既好看又专业的词云图了。
以上就是如何用Python制作词云图?wordcloud配置指南的详细内容,更多请关注创想鸟其它相关文章!
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1363043.html
微信扫一扫
支付宝扫一扫