Python词云制作教程:中文分词、字体、蒙版与关键词权重7案例

发布时间:2026/11/2 12:21:45

Python词云制作教程:中文分词、字体、蒙版与关键词权重7案例 简介《Python实现词云完整教程7个案例》是一份面向文本挖掘与数据可视化初学者及中级Python用户的PDF课程资料重点解决从零生成个性化词云、处理中文分词与调整视觉样式的问题。内容围绕wordcloud和matplotlib展开先梳理词云的概念、作用与生成流程再以7个递进案例演示最简调用、中文不分词与分词、蒙版形状、自定义配色、关键词及权重提取等实现方式每个案例配有代码和运行结果便于对照复现与二次修改。资料同时标注PyCharm、Python 3.7、wordcloud 1.9.3、matplotlib 3.5.3等环境版本可降低依赖安装和中文显示环节的排错成本。压缩包共1个PDF文件约2.07MB篇幅紧凑适合按案例顺序学习或按知识点检索。目前已有109人学习适合作为项目报告、数据分析、社交媒体监控及教学演示中的词云实践参考也可供后续课程设计复用。1. 先别急着敲代码词云到底是什么能帮你解决什么问题你大概率见过这种图一张图里密密麻麻挤满词「数据」两个字大得占住中间边角上是几个几乎看不清的小词颜色花花绿绿整体还拼成一个人脸或者一个心形。这就是词云。它干的事很简单把一段几千字、几万字的文本压缩成一张一眼能看懂的图出现得越多的词画得越大。这份《python实现词云完整教程7个案例.pdf》做的就是这件事用 Python 把一个普通 txt 文本变成一张能直接贴进报告、PPT、公众号的图片从最简单的十行代码一路做到带形状、带配色、带关键词权重的成品。它适合完全没碰过文本可视化的零基础新手也适合手头有份文档、想让结论更直观的人。你不用先懂机器学习会一点 Python 基础语法就够。下面按「是什么、为什么、第一步怎么迈」的顺序把 python 课程资源里的这套流程拆开讲一遍。2. 为什么值得学从一堆文字到一张图的四个步骤很多人第一次接触词云是看到别人分享的一张图觉得好看转头就想自己也做一张。但真要动手得先明白它替你干的到底是什么活。搞清楚这一层后面写代码才不会照着抄一行改一行改崩了不知道错在哪。2.1 词云在替你做哪三件事第一件事是提炼主题。一份两万字的访谈记录你不可能让老板从头读到尾但一张词云能让他在三秒内说出「这次访谈大家主要在聊排班和培训」。词云就是干这个的把散落在全文里的高频词提上来让主题自己浮出水面。第二件事是对比比重。文字里的频率是没有形状的你读十遍也说不清「成本」和「效率」哪个出现得更多。但画成图谁大谁小一目了然。教程里提到词云可以用来做数据探索、发现文本里的模式和趋势说的就是这个意思——它不负责解释原因负责先告诉你「哪里多、哪里少」你再顺着线索去挖。第三件事是当门面。一份分析报告前面全是表格和数字读者早疲了。中间插一张形状漂亮、配色舒服的词云阅读节奏就缓下来了。教程里列出的报告和演示、教育工具、社交媒体监控这些场景本质都是同一个需求用一张图替代一大段描述。反过来说词云也有它做不到的。它展示不了语法关系看不出「谁对谁做了什么」两个词挨在一起纯属排版凑巧。所以它是入口不是终点。想清楚这一点你就不会拿着词云去回答它答不了的问题。2.2 一个类比给一篇文章画一张「热度地图」你可以把词云理解成一张地图。地图上每个城市画一个圆圈人口越多圈越大你扫一眼就知道哪些地方人多。词云就是把「城市」换成「词」把「人口」换成「出现次数」把地图换成一张画布。圈大的地方你自然会多看一眼词大的地方你自然也先读到它。这个类比还有个好处它提醒你地图是会骗人的。如果地图只标了省会没标县城你看到的就是残缺的分布词云也一样如果你把「的、了、是、我们」这些没信息量的词也算进去图里最大的几个圈全是噪音读者第一眼就被带偏。所以真正决定一张词云好不好看的不是代码写得多花哨而是你在画之前有没有把该扔的词扔掉。我第一次做词云的时候图出来挺好看兴冲冲发给同事对方第一句话是「最大的那个字是『我们』」那一刻我才明白地图画得再漂亮标错了地标就是废纸。2.3 动手前先准备素材一份能被程序读懂的文本在装库、写代码之前先花五分钟把素材准备好后面能省一半麻烦。词云对输入的要求其实很低一个纯文本文件就行。但有几个细节新手经常忽略。第一是编码。中文文本必须存成 UTF-8否则 Python 读进来就是一串乱码词云画出来也是一串乱码。用记事本另存的时候留意一下编码选项或者干脆在代码里写死encodingutf-8。第二是纯文本。Word 文档、PDF 不能直接读。你得先把里面的文字复制出来粘到一个 txt 里。这一点很关键很多人卡在第一步就是因为直接把 .docx 丢给程序。第三是长度。太短的文本出不来效果几百字画出来就孤零零几个词中间还空一大片。入门阶段建议找一份几千字以上的材料小说、新闻合集、会议记录都行。第四是先读一遍看看。写两行代码把文件读进来打印前一百个字确认没乱码再往下走# 打开文本文件指定 utf-8 编码避免中文乱码 with open(novel.txt, r, encodingutf-8) as f: text f.read() # 打印前 100 个字符肉眼确认内容正常 print(text[:100]) # 打印总字数太短的话词云会空空荡荡 print(len(text))open的第二个参数r表示只读encodingutf-8是告诉 Python 用什么规则把字节翻译成文字中文文件不加这一句在部分系统上会直接报错。f.read()把整个文件读成一个长字符串赋给text。最后两行是自检能看到正常中文说明文件路径和编码都没问题字数在几千以上说明素材够用。这两步看着琐碎但它把「文件读不进来」和「词云画不出来」这两类完全不同的错误提前分开了后面排查能少走很多弯路。2.4 生成流程四步预处理、算权重、排版、出图教程里把词云的生成拆成一条清晰的流水线入门阶段记住这四步就够了不用背原理。第一步是文本预处理。把标点、换行、无意义的符号去掉把停用词的、了、是、和这类过滤掉中文还要多做一步分词。这一步决定图的质量。第二步是算权重。最常用的是词频出现几次就算几分讲究一点可以用 TF-IDF它会压低那些到处都出现的通用词把真正有区分度的词抬上来。教程最后一个案例用的就是 jieba 的关键词提取直接拿到「词 权重」的组合。第三步是排版。WordCloud 拿到这些词和分数按分数决定字号然后把一个个词塞进画布塞不下就挪位置、转方向直到排满。这一步是库替你做的你只要给参数。第四步是出图。matplotlib 负责把结果画到屏幕上to_file负责存成 png。两个动作分开写是因为一个管看、一个管存。这四步在后面的案例里会反复出现每加一个新玩法加的其实都是其中某一步的参数。你可以先记住这个框架读代码的时候对号入座就不会被一长串参数吓到。3. 第一步怎么迈装好两个库跑通十行代码概念清楚了接下来就是真正的第一次动手。这一章的目标很明确让你的电脑上出现第一张词云图片。哪怕它很丑、很粗糙、字体还很奇怪只要出来了你就已经跨过了最难的那道坎。3.1 装两个库别贪多这份教程的核心只有两个库wordcloud负责生成词云matplotlib负责把图显示出来并存盘。中文场景还会用到一个jieba做分词但它不是第一天必须装的可以等跑通第一个例子再说。打开命令行敲这一行# 安装词云库和绘图库 pip install wordcloud matplotlib如果你电脑上装了多个 Python 版本可能会遇到「装成功了但运行时报找不到模块」的情况这时候把pip换成pip3或者用python -m pip install wordcloud matplotlib指定给当前这个解释器装。装完之后验证一下# 查看已安装版本确认真的装上了 pip show wordcloud教程里给出的参考环境是 Python 3.7 配 wordcloud 1.9.3、matplotlib 3.5.3你的版本号不一样完全没关系入门阶段不用纠结版本对齐。不建议在入门阶段就上手 Anaconda 或者虚拟环境多一层工具就多一层出错的可能先用系统自带的 Python 把图画出来再回头整理环境。3.2 第一个例子十行代码出图新建一个文件叫demo.py和你的文本文件放在同一个文件夹里。然后写下这十行# -*- coding: utf-8 -*- from wordcloud import WordCloud import matplotlib.pyplot as plt # 1. 读取文本 with open(demo.txt, r, encodingutf-8) as f: text f.read() # 2. 生成词云对象使用默认参数 wc WordCloud().generate(text) # 3. 显示图片interpolation 让缩放更平滑 plt.imshow(wc, interpolationbilinear) plt.axis(off) # 关掉坐标轴图上不要出现刻度 plt.show() # 4. 保存成 png 文件 wc.to_file(wordcloud.png)跑之前记得把demo.txt换成你准备好的那份文本文件名要一模一样包括扩展名。这段代码对应的是教程里的案例 01「最简调用」它把所有能省的参数都省了只留最核心的四步。运行之后屏幕上会弹出一个窗口里面是你的第一张词云。关掉窗口同目录下会多出一个wordcloud.png。3.3 逐行看懂这段代码别急着复制粘贴去改别的文本先把每一行在干什么弄明白后面加参数你才知道往哪加。from wordcloud import WordCloud是从库里取出WordCloud这个类。import matplotlib.pyplot as plt是给绘图库起个短名字plt后面每次调用都省点字。第一行的# -*- coding: utf-8 -*-是老写法现在多数环境不需要但加上也不影响。WordCloud()括号里什么都没写意思是全用默认值。这里有几个默认参数值得知道画布大小默认是 400×200 像素字数上限默认 200 个词背景默认黑色。这三个默认值在你第一次跑的时候会直接体现在图上——图偏小、词没多少个、底色发黑都属于正常现象不是你写错了。.generate(text)是整个流程的核心。它一次性做完三件事统计词频、按词频分配字号、把词排进画布。你给它的是一整段字符串它还给你的wc对象里装着排好版的图像。plt.imshow(wc, interpolationbilinear)是把wc里的图像画到屏幕上interpolation参数控制放大缩小时的像素过渡方式bilinear会让边缘看起来柔和一些不写也能出图。plt.axis(off)关掉坐标轴。不关的话图的外面会围一圈刻度数字像数学试卷上的坐标图很难看。wc.to_file(wordcloud.png)是真正把图像写到硬盘。注意它是wc的方法不是plt的因为它存的是原始分辨率的那张图而不是屏幕上显示的那张。这两张图有时候尺寸不一样排查问题时别混淆。3.4 跑不通先看这三处第一次跑报错几乎是必然的。绝大多数问题集中在这三个地方按顺序排一遍八成能自己解决。第一个是找不到文件。报错内容大概是FileNotFoundError意思是程序在它执行的那个目录里没找到demo.txt。注意「执行目录」和「文件所在目录」是两回事你在 A 文件夹里打开命令行程序就只在 A 里找。最简单的办法是把demo.py和demo.txt放进同一个文件夹然后在这个文件夹里打开命令行运行。第二个是中文解码失败。报错里有UnicodeDecodeError这个词说明你的文件不是 UTF-8 编码。用文本编辑器打开文件另存为 UTF-8 再试一次。第三个是找不到模块。报错是ModuleNotFoundError: No module named wordcloud说明 pip 装到了另一个 Python 环境里。换成python -m pip install wordcloud重装一次让 pip 跟着你运行代码的那个解释器走。这三处过了你的第一张图就出来了。它可能不好看词可能全是「the」「and」背景黑乎乎的。没关系这正是接下来要解决的问题。4. 中文词云的三道坎分词、字体、蒙版一个个拆英文文本跑通之后很多人第一件事就是换成中文试试然后收获一张全是方块或者糊成一团的图。这一章就讲清楚中文为什么要多走几步以及从案例 02 到案例 07 那几段代码各自解决了什么问题。4.1 中文不分词会怎样一张糊在一起的图英文有天然的分隔符单词之间空格一隔程序切一刀就是一个词。中文没有这个便利「今天天气很好」在程序眼里就是一整串字符它不知道「今天」「天气」是两个词。如果不做任何处理直接丢给 WordCloud会出现两种结果。一种是它按空格切但你整段文字里一个空格都没有于是它把整段当成一个巨大的「词」画面上只有一小团东西。另一种是你手动在每句话中间加了空格但切出来的是整句整句的短语字号大小失去意义图就糊了。教程里案例 02 演示的就是「中文不分词」的效果图能出来但词条粗大、重复读不出重点。这个案例的价值不在结果而在于让你亲眼看到不分词的后果后面才会明白为什么要多花一步。真正的问题是不光是好看不好看的问题。不分词词频统计就无从谈起你没法知道「培训」出现了多少次因为它可能藏在一句话里没被单独拎出来。所以中文词云的第一步不是调参数是分词。4.2 用 jieba 分词一行 join 改变了什么教程用的是jieba这个中文分词库它是这个领域里用得最广的一个。装一下pip install jieba然后在生成词云之前加两行import jieba with open(novel.txt, r, encodingutf-8) as f: text f.read() # 分词cut 返回一个个词用空格把它们重新连成一串 text .join(jieba.cut(text)) # 打印前 100 个字符确认词与词之间已经有空格了 print(text[:100])jieba.cut(text)返回的是一个生成器里面按顺序吐出一个个词。 .join(...)是拿空格当胶水把这些词重新粘成一个字符串。为什么要粘回去因为 WordCloud 认的是空格分隔你给它一串带空格的词它就能一个个切出来统计你给它一串没空格的中文它就没法切。这一行的作用就是把中文「伪装」成英文的格式。jieba.cut默认是精确模式尽量把句子切得最准。它还有全模式和搜索引擎模式前者把所有可能的词都切出来速度快但会有歧义后者在精确模式基础上把长词再切一刀适合做检索。入门阶段用默认的就够了不用急着换模式。分词完还有一步别忘了停用词。中文里「的、了、是、我、你、他、这个、那个」出现的频率极高不滤掉的话你的词云最大的几个字全是这些噪音。WordCloud 有个stopwords参数可以传一个集合进去把不想要的词列进去就行# 自定义停用词把没信息量的词排除掉 stop_words {的, 了, 是, 在, 和, 就, 不, 也, 有, 这} wc WordCloud(font_pathmyfont.ttf, stopwordsstop_words).generate(text)这个集合不用一次列全跑一遍看结果发现哪个大词没用就加进去几轮下来就干净了。教程里没有强制要求这一步但它是从「能出图」到「图有用」之间最短的一段路。4.3 字体路径中文变方块的血泪经验分词做对了很多人还是会得到一张全是由小方块组成的图。这不是代码错了是字体问题。WordCloud 的默认字体是给英文准备的里面没有中文字形。遇到中文它找不到对应的形状只能画一个「缺字方块」顶上。所以中文词云必须显式指定一个支持中文的字体文件这就是font_path参数的作用。做法是在代码里写清楚字体文件的路径# font_path 指向一个支持中文的字体文件 wc WordCloud( font_pathmyfont.ttf, # 换成你自己电脑上的中文字体文件 width800, # 画布宽度单位像素 height600, # 画布高度 background_colorwhite # 白色背景方便贴进文档 ).generate(text)font_path可以是绝对路径也可以是相对路径。相对路径是相对于你运行代码的那个目录所以最省事的做法是把字体文件复制到项目文件夹里改个短名字比如myfont.ttf然后直接写文件名。提示字体文件不用去找什么特殊资源你电脑系统里自带的中文字体就能用。Windows 下在系统字体目录里Mac 下在字体册里找一个常规的宋体或黑体复制一份出来放进项目文件夹即可。注意有些系统字体的授权不允许再分发自己本地用没问题别打包进要公开的资源里。width和height决定画布大小默认的 400×200 太小中文笔画复杂800×600 起步看着才舒服。background_colorwhite是给个白底默认的黑色背景打印出来是一团黑还得再抠图。这一步踩坑的人特别多而且症状很迷惑——程序不报错就是图不对。记住一个判断规则图能出来但字是方块一定是字体问题程序直接报错一定是路径或者别的参数问题。这两类别混着查。4.4 蒙版与配色让词云长成你要的轮廓到这一步你的词云已经能正确显示中文了但它还是个规规矩矩的长方形。教程从案例 04 开始讲蒙版就是让词的排布范围跟着一张图片的形状走比如整个人形轮廓、一个心形、一个产品 logo。原理不复杂给 WordCloud 传一张图片它会读取图片里哪些像素是「有内容的」然后只在那些位置排词。代码上要引入 PIL 和 numpy 两个库from wordcloud import WordCloud, ImageColorGenerator from PIL import Image import numpy as np # 读取蒙版图片转成 numpy 数组交给 WordCloud mask np.array(Image.open(mask.png)) wc WordCloud( maskmask, # 用这张图的形状决定词的排布范围 font_pathmyfont.ttf, background_colorwhite ).generate(text) # 从蒙版图片里提取颜色让词的颜色跟着原图走 image_colors ImageColorGenerator(mask) wc.recolor(color_funcimage_colors) wc.to_file(mask_wordcloud.png)np.array(Image.open(mask.png))这一行做了两件事Image.open打开图片np.array把它转成矩阵。WordCloud 要的不是图片文件是像素矩阵所以必须转这一步。蒙版图有讲究。最好用「白底 有明确形状的深色图案」或者干脆用带透明通道的 PNG。如果蒙版图本身颜色很杂WordCloud 会把所有非白像素都当成可排布区域形状就糊了。我第一次用的时候随便找了张风景照当蒙版结果排出来的词把整张图铺满一点形状都没有白白折腾半小时。ImageColorGenerator(mask)是让词的颜色从蒙版图里采样。原本是深色的地方词就深原本是浅色的地方词就浅整体色调和原图统一比随机配色舒服很多。wc.recolor(color_func...)就是把这套颜色规则应用上去。教程案例 06 还给了另一种玩法自己写一个颜色函数。WordCloud 允许你传一个函数进去它会给每个词调用一次传入词、字号、位置、方向这些信息你返回一个颜色字符串就行。教程里的写法是用 HSL 随机生成一个色相固定、亮度和饱和度在区间内浮动的颜色import random # 自定义配色函数每个词调用一次返回一个颜色字符串 def random_color(word, font_size, position, orientation, font_path, random_state): # 色相固定为 0红色系饱和度和亮度随机浮动 return hsl(0, %d%%, %d%%) % (random.randint(60, 80), random.randint(60, 80)) wc WordCloud( color_funcrandom_color, maskmask, font_pathmyfont.ttf, background_colorwhite ).generate(text)color_func接收的就是这个函数。函数的六个参数由库自动传入你只需要关心返回什么颜色。这种写法适合你想要统一色调比如全公司的品牌色系又不想每张图都一模一样的时候。注意函数里别写耗时太长的逻辑因为每个词都要调一次两百个词就是两百次。4.5 关键词加权重从词频统计升级到关键词提取前面所有案例词的大小都来自「这个词出现了多少次」。这个规则简单但它有个天然缺陷出现得多的词不一定重要。「我们」可能出现 500 次「亏损」只出现 40 次可后者才是你真正想让人看见的。教程的案例 07 给了另一个思路先让 jieba 把关键词和权重算出来再交给 WordCloud 按权重画。这样字号不再代表次数而代表「这个词有多能代表这篇文章」。import jieba.analyse with open(novel.txt, r, encodingutf-8) as f: text f.read() # 提取前 200 个关键词withWeightTrue 表示同时返回权重 freq jieba.analyse.extract_tags(text, topK200, withWeightTrue) # 结果是 [(词, 权重), ...] 的列表转成字典给 WordCloud 用 freq {item[0]: item[1] for item in freq} wc WordCloud( maskmask, font_pathmyfont.ttf, background_colorwhite ).generate_from_frequencies(freq) # 注意这里换了方法extract_tags的topK200控制取前多少个词withWeightTrue让它把权重一起返回。返回值是一个列表每一项是「词 权重」的元组。{item[0]: item[1] for item in freq}这行是字典推导式把它转成{词: 权重}的形式因为 WordCloud 认这个结构。最关键的一行是最后的generate_from_frequencies(freq)它和前面的generate(text)是两个不同的入口。generate接收原始文本内部自己统计词频generate_from_frequencies直接接收已经算好的「词—分数」对照表跳过统计这一步。用了这个之后就不需要再分词、也不需要再传停用词了因为关键词提取已经帮你筛过一轮。这个案例是整份教程里最实用的一个。它把「画图」变成了「有判断地画图」——你不再是被动地看高频词是什么而是主动决定让什么词变大。做报告、做结论页的时候这个差别非常明显。5. 新手最容易翻车的五个地方排查清单下面这五条是入门阶段出现频率最高的。每一条都按「现象 → 原因 → 解决」的顺序写卡住的时候直接对号入座不用从头重读代码。5.1 中文全是方块但程序不报错现象代码顺利跑完图也出来了但里面每个字都是一个小方框看起来像乱码。原因WordCloud 用了默认字体而默认字体里没有中文字形。程序找不到对应的字只能画个占位方块顶上这不是编码问题是字体问题。解决给 WordCloud 传font_path参数指向一个支持中文的字体文件。文件要真实存在路径要写对最稳的做法是把字体文件复制到项目文件夹里直接写文件名。改完之后方块会立刻变成正常的字。5.2 装完库运行时还是说找不到模块现象命令行里pip install wordcloud显示安装成功一运行代码就报ModuleNotFoundError: No module named wordcloud。原因你电脑上有多个 Python 环境pip 装到了 A运行代码用的是 B。这在装过多个版本 Python 或者用过其他工具管理环境的机器上特别常见。解决用python -m pip install wordcloud matplotlib重新装一次这样能保证装给当前这个解释器。装完用python -c import wordcloud; print(wordcloud.__version__)验证能打印出版本号就说明找得到。5.3 图里最大的词是「的」「了」「我们」现象词云出来了中文也正常但最大的几个字全是虚词和代词真正的关键词被挤到角落里。原因没有做停用词过滤。这些词在任何一篇中文里都高频词频统计的原则下它们必然排在最前面。解决给 WordCloud 传stopwords参数把这类词列成一个集合。或者更彻底一点走案例 07 的路线用jieba.analyse.extract_tags提取关键词它本身就带一轮筛选。建议新手先用停用词表手动过滤几轮跑个三四次看到哪个大词没意义就加进去比一次性背一张长表有效得多。5.4 传了蒙版形状完全没出来现象按教程写了maskmask结果词还是铺满整个矩形看不出任何形状。原因蒙版图的处理方式不对。WordCloud 会把「白色255,255,255」的像素当成不可排布区域其余像素当成可排布区域。如果你的蒙版图背景不是纯白或者图案本身就是浅色的判断就乱了。解决换一张蒙版图用「纯白背景 深色实心图案」的 PNG或者用带透明通道的图片。另外确认np.array(Image.open(...))这行没写错路径对图片能正常打开。可以在传进去之前先print(mask.shape)看一眼输出了三维数组说明是彩色图一般是能用的。5.5 保存的图片一片空白或者尺寸不对现象wc.to_file()生成的文件打开是一片白或者分辨率比屏幕上看到的差很多。原因多半是plt.show()和to_file()的先后顺序与预期不一致或者存的是显示用的缩放图。另一个常见原因是背景色和词的颜色撞了白底白字自然看着像空的。解决把wc.to_file()写在plt.show()之前或者之后都行但要注意to_file存的是wc对象里的原图尺寸由width和height决定跟显示窗口无关。如果图看着空先检查background_color是不是和colormap的浅色撞了把背景改成白色或者直接不设再试一次。6. 从跑通到会用下一步该学什么七个案例跑完你已经能做出带中文、带形状、带配色、带关键词权重的词云了。这时候最容易犯的错是停下来觉得「我会了」。实际上你现在会的是「照着教程改参数」离「拿到一份新材料能自己判断该怎么画」还差几步。下面是我建议的顺序都是我自己走过弯路之后觉得最省力的那条。第一步把停用词表攒起来。这是投入产出比最高的一件事。你不需要去找一份几万词的通用停用词表就建一个自己的stop.txt每做一张图发现哪个词碍眼就加一行。做上十张图这个表就够你用了。加载方式很简单# 从文件加载停用词一行一个词 with open(stop.txt, r, encodingutf-8) as f: stop_words set(line.strip() for line in f if line.strip()) wc WordCloud(font_pathmyfont.ttf, stopwordsstop_words)set(...)的作用是把列表转成集合查找速度快很多因为 WordCloud 每遇到一个词都要判断一次在不在停用词里。line.strip()去掉每行末尾的换行符if line.strip()是跳过空行。第二步搞清楚词频和 TF-IDF 的差别。教程的案例 07 用的是 jieba 的关键词提取它背后有一套权重算法。你不需要现在就去推公式但要知道它和单纯数次数不是一回事。同一个词在十篇文章里都出现词频法会给它高分TF-IDF 会把它压下去因为它不能区分这些文章。什么时候用哪个我的经验是做单篇文本的概览词频够了做多篇文本的对比和筛选用关键词提取。第三步把图从「能看」调到「能用」。这一步和代码关系不大跟审美关系很大。几个具体的调整方向字号跨度别太大max_font_size和min_font_size卡一下范围不然最小的词糊成一团黑点配色别超过三种主色ImageColorGenerator从蒙版取色是最省事的做法词的数量控制在 100 到 200 之间多了像马赛克少了太空。第四步往上游走一步学一点文本预处理。去标点、去数字、统一简繁、把同义词合并这些动作看起来琐碎但它们决定了词云能不能反映真实情况。比如「客户」和「用户」在你的文本里可能指的是同一批人不合并的话两个词各自都不够大就被淹没了。第五步也是我最想提醒的一条别把词云当成终点。它是一张入口图读者看完之后一定会问「为什么这个词这么大」。你得准备好回答这个问题的材料可能是一张趋势图可能是一段原文摘录。词云负责把人吸引过来剩下的还得靠内容。我第一次给团队做分享PPT 首页放了一张特别漂亮的词云讲完之后有人问「所以呢」我当场卡住。那张图我调了两个小时的配色和蒙版却从来没想过它到底要说明什么。从那以后我每次画词云之前都强制自己先写一句话这张图想让人看到哪一个词。写不出来就先别画回去读文本。希望这篇能帮你少走一点这样的弯路先把第一张图跑出来剩下的慢慢来。本文还有配套的精品资源点击获取
延伸阅读

更多相关文章

2026/11/2 12:21:45

2026网络安全工程师系统学习路线与实战指南

1. 网络安全学习路线图概述2026年网络安全领域正面临前所未有的挑战与机遇。随着数字化转型加速,网络安全工程师已成为全球最紧缺的技术岗位之一。这份学习路线图不同于市面上常见的碎片化教程,而是基于企业实际安全需求设计的系统性成长路径。我见过太多…

2026/11/2 12:11:20

VB6学籍管理系统源码排错:建库、ADO连接串与引用控件修复

简介:资源围绕VB学籍管理系统,以1个doc设计文档形式呈现,面向学习Visual Basic与数据库课程设计、毕业设计的学生,帮助梳理学生信息、成绩、出勤及权限管理等模块从需求分析到实现的整体思路。压缩包内共1个doc文件,约…

2026/11/2 12:11:20

picoRV32软核SoC集成:握手总线、PCPI与Overlay实践

简介:「硬件结构设计」综合实验报告围绕开源 RISC-V 核 picoRV32 展开,面向计算机组成原理、嵌入式系统与 FPGA 课程的学习者,也适合想入门 SoC 搭建的自学者;报告完整记录从需求分析、体系结构设计、IP 核封装与总线连接到生成比…

2026/11/2 14:42:16

Clipper2多边形裁剪:C++、C#、Delphi跨语言落地与调优

多边形裁剪这个词听着像图形学的教科书名词,但真到了工程里,它出现的地方比想象中多得多:排版软件里两个色块叠加要算公共区域,CAD 里把零件轮廓和加工窗口求交,地图渲染时把行政区边界和可视窗口做一次裁切&#xff0…

2026/11/2 14:42:16

在线表格嵌入前端:用Univer实现单元格白名单编辑与只读控制

最近接了一个需求,刚开始觉得不太“前端”:网页里放一个在线表格,用户只能往指定的几个单元格里填内容,其他区域比如表头、合计行、审批列,一律不允许改动。这种场景很常见,比如激励申报、预算填报、台账录…

2026/11/2 14:42:16

Paperclip基准:大模型拼接文档推理与引用一致性评测

1. Paperclip是什么:大模型推理评测的新方向 最近圈子里聊得最多的benchmark,除了传统的MMLU、GPQA这些老面孔,就是OpenAI这个新放出来的Paperclip了。全称是Public Pivotal Reasoning Evaluation of Concatenated Inputs from Language Mode…

2026/11/2 14:42:16

Seaquel数据库工具:高性能跨平台开发实战解析

1. Seaquel工具核心定位解析Seaquel作为新一代数据库开发工具,其设计理念直击现代开发者三大痛点:多数据库环境切换成本高、大数据量操作卡顿、跨团队协作困难。我在实际使用中发现,它通过Rust构建的高性能内核能轻松处理百万级数据表的秒级响…

2026/11/2 14:42:16

Ventoy启动主题定制:theme.txt、字体与图标排错指南

插上一个 U 盘,里面躺着十几个系统镜像,开机按快捷键,屏幕上蹦出一排白字黑底的菜单——这是大多数人做多合一启动盘时的第一印象。Ventoy 把这件事的门槛压到了最低:装一次,之后镜像文件直接往里拷,开机自…

2026/11/2 14:37:16

汽车尾灯控制电路仿真:74LS161与74LS138协同设计与调试

简介:这份资源是面向电子信息、自动化等专业学生及数字电路初学者的汽车尾灯控制电路仿真实验报告,以MATLAB与Multisim为平台,解决从原理理解到电路搭建、仿真验证的完整实验需求。压缩包内共1个doc文档,约141KB,完整收…

2026/11/2 6:08:01

面向复杂光照与角度的宠物面部识别鲁棒性增强策略

在智慧养宠时代,基于视觉的宠物身份识别技术正逐步从实验室走向家庭应用。然而,与配合度高的人类不同,宠物是典型的“非合作生物识别对象”——它们不会主动配合摄像头调整姿态,更无法控制光照环境。实际应用中,我们常…

2026/11/2 6:39:12

SSM电子书店源码全解析:结构、原理、部署与排错实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/11/2 1:04:04

工业级SPI隔离设计:硬件抗扰与信号完整性实战指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/11/2 1:04:04

PLFM_RADAR:主动探测数据通道,构建低误报的数据感知系统

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/11/2 1:04:04

工业SPI隔离设计:MAX14431与STM32F746硬件抗干扰实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/11/2 6:08:01

面向复杂光照与角度的宠物面部识别鲁棒性增强策略

在智慧养宠时代,基于视觉的宠物身份识别技术正逐步从实验室走向家庭应用。然而,与配合度高的人类不同,宠物是典型的“非合作生物识别对象”——它们不会主动配合摄像头调整姿态,更无法控制光照环境。实际应用中,我们常…

2026/11/2 6:39:12

SSM电子书店源码全解析:结构、原理、部署与排错实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
☎咨询二维码 ☎ ↑