我先坦白一个转变:以前我做图表,流程是“打开工具→翻文档→查配置→调样式”,一张图少说折腾半小时。现在我的流程变成了“用大白话描述需求→交给 DeepSeek →拿到可直接运行的代码或脚本→微调发布”,全程基本三分钟。这个改变不是因为我学会了更多图表技巧,而是因为我换了一套生产工具——用自然语言驱动 ECharts、Mermaid 和 Python 这三条完全不同的图表生产链路。
这篇文章没有复杂的理论,全部是我这大半年实际跑通的方案、踩过的坑,以及我对“自然语言生成图表”这件事的完整判断。如果你经常要做数据可视化、写技术文档配图、或者定期产出数据分析图表,这篇内容应该能让你少走不少弯路。
1. 先说结论:三条图表路线到底怎么选
很多人第一次接触“用 AI 生成图表”时,都会下意识问一个问题:到底该学 ECharts、Mermaid 还是 Python?我的回答是:别问哪个最好,要问你的图表最终出现在哪里。
1.1 我为什么从“手写图表代码”转向“自然语言生成”
做技术博客和数据分析的那几年,我写过的图表代码不算少。ECharts 的 option 配置项我背过一大半,Matplotlib 的坐标轴、图例、字体设置我调过无数遍。但说实话,真正让我生产效率翻倍的,不是把 API 背得更熟,而是把“描述需求”这件事做到位了,然后让 AI 来写那 80% 的样板代码。
举个最典型的场景:领导临时要一份各季度销售额对比图。以前我需要回忆 ECharts 柱状图的数据格式、tooltip 触发方式、legend 位置,再手动渲染成 HTML 调试。现在我把原始数据直接粘给 DeepSeek,说一句“用 ECharts 画一张季度销售额柱状图,要带数据标签、渐变配色、响应式”,它返回的就是一份能直接双击打开的 HTML 文件。
这个转变的本质是:我把“实现层”的负担外包给了大模型,自己只保留“描述层”的判断力。描述越清晰,生成结果越接近成品。这也是为什么我把这篇文章的定位放在“自然语言驱动生产力”——真正提效的不是模型有多聪明,而是你的需求表达能力有没有跟上。
1.2 三条路线解决的是三类完全不同的场景
先说清楚定位,后面才不会选错方向:
- ECharts 路线:最终产物是网页里的交互图表。适合数据可视化大屏、内部数据看板、需要鼠标悬停看明细、缩放、联动等交互效果的场景。产物是 HTML 文件,可以直接扔给浏览器打开。
- Mermaid 路线:最终产物是嵌在 Markdown / Notion / 文档站里的静态图。适合画流程图、时序图、甘特图、状态图、类图,本质是“用文本描述结构,再渲染成图形”。无需前端知识,文档改起来极其方便。
- Python 路线:最终产物是图片文件或自动化报表。适合批量处理数据、做科研统计图、周期性生成报表、需要把图表直接写进 PDF/Word 的场景。配合 Pandas 读取数据,AI 生成的是完整可复跑的脚本。
一句话概括:要交互选 ECharts,要文档配图选 Mermaid,要数据分析选 Python。
1.3 三种方案的能力边界对比
我整理了一张表,基本覆盖了大多数人关心的维度:
| 对比项 | DeepSeek + ECharts | DeepSeek + Mermaid | DeepSeek + Python |
|---|---|---|---|
| 最终产物 | HTML 网页、可交互图表 | 文本渲染图(SVG/PNG) | PNG/PDF 图片、完整报表 |
| 上手门槛 | 需要一点 HTML 基础 | 几乎零门槛 | 需要会跑 Python 脚本 |
| 交互能力 | 强,支持缩放、悬浮、动态 | 弱,基本静态 | 弱,静态为主 |
| 典型场景 | 数据大屏、看板、汇报网页 | 技术文档、需求说明、流程图 | 数据分析、科研绘图、批量报表 |
| 修改成本 | 改 prompt 重新生成即可 | 改文本即可 | 改脚本重新运行 |
| 数据量规模 | 中等(前端渲染) | 小(结构描述) | 大(Pandas 处理) |
这张表不是绝对的,但它能帮你避免最常见的尴尬:明明只需要在 README 里画个流程图,却非要用 Python 折腾半天;明明要做一个带联动的大屏,却指望 Mermaid 能搞定交互。先选路线,再写提示词,三分钟出图才成立。
2. DeepSeek + ECharts:交付可交互图表的最快路径
我经常对同事说:如果你团队里需要一个能看数据的网页,但又不想专门养一个前端,DeepSeek + ECharts 是最划算的组合。因为它能直接把“数据+需求”翻译成一个完整的 HTML 文件,你甚至不需要理解内部实现原理。
2.1 环境准备:连工程化都不用碰
这可能是所有方案里环境准备最简单的一个。ECharts 是纯前端库,你只需要一个能打开本地 HTML 的浏览器。不需要 Node.js,不需要装脚手架,不需要配置打包工具。
我的标准做法是让 DeepSeek 生成一个单文件 HTML:直接在<script>标签里通过 CDN 引入 ECharts,数据放在页面内,双击即可打开看效果。用到内网环境时,再把 ECharts 的 JS 文件下载到本地引用即可。
这里有一个实操细节:如果你面向的是内网部署,一定要在提示词里写明“ECharts 使用本地文件引用,不要使用 CDN”,否则生成的 HTML 在内网环境会白屏。我在某公司的数据看板项目上踩过一次,整个页面只缺一个 JS 文件,排查了半天才发现是 CDN 无法访问。
2.2 一个案例走完:从需求描述到可视化大屏
我带你看一个真实的生成过程。假设我现在手头有一个销售团队的季度数据——四个区域、三个季度的销售额和毛利,我需要一个能展示趋势的交互图。原始数据放进来后,我的提示词大概是这样的:
请用 ECharts 生成一个 HTML 页面: 1. 数据如下(区域、季度、销售额、毛利): 华东 Q1 820 210;华东 Q2 950 260;华东 Q3 1130 310; 华北 Q1 610 150;华北 Q2 720 180;华北 Q3 890 230; 华南 Q1 730 190;华南 Q2 860 220;华南 Q3 1010 275; 西南 Q1 420 105;西南 Q2 510 130;西南 Q3 650 165。 2. 用折线图展示各区域销售趋势,X 轴为季度,Y 轴为销售额。 3. 配色用蓝色渐变,图例放右上角,数据标签可见。 4. 外加一个柱状图展示各地区毛利合计。 5. 两个图表上下排列,页面自适应宽度。DeepSeek 返回的就是一个完整的 HTML 文件,里面有两个图表:上半部分是多折线趋势图,下半部分是毛利柱状图。实测下来,这个页面在浏览器里打开能直接交互,鼠标悬停能看到每个点的具体数值。
这个案例说明了一个关键点:你不需要告诉 AI 怎么配置 ECharts 的 option 对象,你只需要告诉它要展示什么、数据是什么、长什么样。剩下的事情,它在后台替你完成了。
2.3 让 AI 按你的审美改图:数据配置项的正确问法
生成第一版往往只能算“能看”,离“好看”还有距离。这时候很多人会陷入一个误区:直接让 AI“改好看一点”,结果它返回的仍然是一版平庸的设计。因为“好看”这个词太主观了,模型没有你的审美偏好。
我的经验是,把审美要求拆成可以执行的视觉规则:
- 颜色:指定主题色和辅助色,例如“主色使用 #3B82F6,辅助色使用 #F59E0B,背景为浅灰色 #F8FAFC”。
- 布局:明确图例位置、图表间距、标题位置。
- 字体:指定是否需要加粗、字号、字体族。
- 数据点:是否显示数值标签、是否开启平滑曲线、是否加阴影。
- 额外组件:是否需要 dataZoom 缩放条、tooltip 触发方式、grid 边距。
这些规则不需要你懂 ECharts 配置项,只需要你能用自然语言描述出来。比如我常用的句式是:“把折线改成平滑曲线,数据标签字号 12,tooltip 用十字准线模式,底部加 dataZoom 缩放条,Y 轴数值单位显示为‘万元’。”DeepSeek 把这些话翻译成配置项的能力,远比你想象中强。
3. DeepSeek + Mermaid:把图表装进 Markdown 的轻量方案
如果说 ECharts 是“重武器”,那么 Mermaid 就是“轻骑兵”。它不追求炫酷,追求的是文本即图表的低维护成本。凡是需要频繁改动的流程文档、架构说明、需求文档,我都推荐用 Mermaid。
3.1 为什么 Markdown 写文档的人需要 Mermaid
写技术方案的人都有这种体验:文档里嵌一张流程图,一旦业务逻辑变了一点,就得重新打开画图工具,拖半天框、连线,云端保存又是一层层目录。而 Mermaid 的核心是:图形由文本生成,改文本就等于改图。
DeepSeek 在 Mermaid 这条链路上解决的最大问题,是帮你把“脑子里乱糟糟的流程”直接变成合法的 Mermaid 语法。你不需要背 flowchart、sequenceDiagram、gantt 的语法细节,只需要说清楚几个人、几个环节、什么顺序。
举例来说,我在写一篇关于订单系统的文档时,需要一张“下单到支付”的时序图。我的提示词是:
请用 Mermaid 的 sequenceDiagram 画出: 用户、客户端、订单服务、支付服务四个角色, 流程:用户提交订单 -> 客户端创建订单 -> 订单服务检查库存 -> 返回创建结果 -> 用户发起支付 -> 客户端请求支付 -> 支付服务扣款 -> 通知订单服务 -> 返回支付结果。它生成的代码直接粘进支持 Mermaid 的 Markdown 编辑器,马上渲染成一张合格的时序图。整个过程中我没碰过一条 Mermaid 语法规则,但图的质量对文档来说完全够用。
3.2 Timeline/流程图/甘特图:AI 一次性生成的正确姿势
Mermaid 有很多图类型,我日常用得最多的三类是 flowchart(流程图)、sequenceDiagram(时序图)、gantt(甘特图)。DeepSeek 在这里的“正确姿势”是:给结构,别给语法。
所谓“给结构”,是指你把参与者、节点、先后关系、分支条件描述清楚。例如画一个用户登录流程图,我通常会这样说:
请用 Mermaid flowchart 画登录逻辑: 开始 -> 用户输入账号密码 -> 校验账号是否存在 -> 不存在则提示“账号不存在”并回到输入 -> 存在则校验密码 -> 密码错误则提示“密码错误”并回到输入 -> 密码正确则进入首页 -> 结束。 另外加一个分支:如果连续失败 5 次,则锁定账号 30 分钟。模型会帮你处理分支和节点命名,生成结果基本能直接用。我特别推荐把一段复杂的业务说明直接扔给它,然后只要一句“把上面的逻辑画成 Mermaid 流程图”,它完成的结构转换通常比人手动整理更快。
3.3 Mermaid 最容易翻车的地方与修复套路
用 Mermaid 这几个月,我总结出三个高频翻车点,每个都有对应的修复套路。
第一,节点文字里的特殊符号导致渲染失败。比如括号、引号、中英文混排里的特殊字符,会让 Mermaid 语法直接报错。修复方式很简单:让 DeepSeek 把节点文字用引号包起来,或者在提示词里明确“节点文字不要包含括号,改用括号外描述”。如果已经生成出错,把报错信息原样复制给 DeepSeek,让它自查修复,大部分情况下它能自己解决。
第二,中文换行和宽度问题。Mermaid 节点里的中文比较长时,渲染出来的框可能过宽。修复方法是让 AI 在节点文字中加<br/>换行,例如把“用户点击提交订单按钮后进入支付环节”拆成两行显示。
第三,流程图逻辑分支中有环回。Mermaid 画循环回边时,新手容易把连线方向搞反。这时候与其自己改语法,不如把目标逻辑再说一遍,强调“失败分支回到上一步”,让 AI 重新生成。
4. DeepSeek + Python:批量图表与数据分析的终极形态
ECharts 和 Mermaid 解决的是“单张图”和“文档图”的问题,但如果你面对的是一份几千行的 CSV,需要产出趋势图、相关性热力图、分布直方图,那真正的生产力工具是 Python。
4.1 Matplotlib/Seaborn/Pandas:AI 帮你写样板代码
以前画一张 Matplotlib 图,光是调字体、调坐标轴、调图例就能耗掉小半天。现在我的标准流程是:先用 Pandas 读数据,再让 DeepSeek 按我的需求写绘图代码,最后运行脚本输出成图。
举一个我做过很多次的场景:某教育机构给我一份学员成绩数据,包含姓名、班级、各科成绩、总出勤率。我需要:
- 各科成绩的箱线图,看分布;
- 总成绩与出勤率的散点图,看相关性;
- 各班平均成绩的柱状图,带误差条。
我的提示词模板是:
请写一段 Python 代码,使用 pandas 读取“score.csv”, 该文件包含姓名、班级、语文、数学、英语、出勤率、总分。 要求: 1. 用 seaborn 画三个子图,分别是各科成绩箱线图、总分与出勤率散点图、各班平均分柱状图(带标准差误差条)。 2. 图表风格使用 seaborn 默认 whitegrid。 3. 中文标签正常显示,不要出现方框乱码。 4. 图片保存为 result.png,DPI 300。它返回的代码可以直接放进 Jupyter Notebook 跑。我第一次用这个流程处理某课程数据的时候,从读数据到出图总共花了不到十分钟——其中大部分时间还是在等脚本运行。
4.2 从 CSV 到 PDF 报告:一整套可复制的自动出图链路
如果你需要每周/每月产出固定格式的数据报告,我强烈建议不要每次手动重新生成,而是把整个链路沉淀成一个脚本。DeepSeek 在搭建这条链路上的作用非常明显。
我搭建的一个典型链路是这样的:
- 用 pandas 读取最新导出的数据文件;
- 用 matplotlib / seaborn 生成 4~6 张固定图表;
- 用 reportlab 或 jinja2 + weasyprint 把图表和图文字说明拼装成 PDF 报告;
- 自动在本地生成带日期的报告文件夹。
这个过程里,我只需要在最开始把全链路的需求描述给 DeepSeek,让它生成初始脚本,之后每周只需要替换数据文件,跑一次脚本,报告自动产出。某团队用这个方案把周报制作时间从两小时压缩到了十五分钟,主要时间还是在核对数据。
4.3 中文乱码与字体问题:不得不说的头号坑
用 Python 画图,最经典也最折磨人的就是中文乱码。Matplotlib 默认字体不支持中文,生成的图里全是方框。更麻烦的是,不同操作系统、不同字体环境下,解决方案完全不一样。
我的处理方式是:在提示词里直接要求 AI 加入字体设置代码。比如:
import matplotlib.pyplot as plt plt.rcParams['font.sans-serif'] = ['Microsoft YaHei'] plt.rcParams['axes.unicode_minus'] = False生成代码后,如果发现还是乱码,就把截图或报错信息丢给 DeepSeek,让它判断是字体没找到还是配置没生效。在我经历过的案例里,90% 的情况是系统里没有对应字体文件,需要先安装字体,再重新运行脚本。这里有个技巧:让 AI 写一段自动检测可用字体并设置默认字体的代码,可以省掉后续很多麻烦。
5. 让 AI “画对”而非“画出来”:提示词工程的核心技巧
三分钟出图的前提,不是 DeepSeek 有多聪明,而是你的提示词能不能在一轮对话里把需求说清楚。我把这套方法总结成“五要素”和“一示例”。
5.1 需求描述五要素模板
我每次让 AI 画图,都会在提示词里覆盖这五个要素,你可以直接抄走:
- 图类型:柱状图、折线图、散点图、流程图、时序图……一句话说死。
- 数据来源:直接把数据粘贴进来,或者明确告诉它 CSV 文件路径。
- 视觉要求:颜色、字体、图例位置、数据标签、主题风格。
- 最终产物:HTML 文件、Mermaid 代码、Python 脚本、PNG 图片。
- 约束条件:中文显示、内网环境、DPI、文件宽度、不要 CDN 等。
套用格式就是:“请用 [图类型] 展示 [数据/场景]。数据是 [数据]。要求 [视觉风格]。产物是 [文件类型]。注意 [约束]。”
5.2 给出示例是消歧义的最强武器
大模型最怕的不是你要求多,而是你的描述有多义。尤其是“好看一点”“浓一点”“紧凑一点”这类模糊词,每个人理解都不一样。如果要求特别明确,还有一种更高效的方式:给示例图描述。
比如我上次需要一张仿某个大屏视觉风格的折线图,我直接在提示词里写:“参考这张图的风格:深色背景 #1E293B,主色是紫蓝渐变,折线下方有区域渐变填充,数据标签白色,标题左上角。”这个参考描述比“做一个科技感的大屏图表”有效十倍。
如果条件允许,最高级的做法是把目标图的截图一并发给 DeepSeek。多模态输入下,理解精度会大幅提升。没有截图时,就尽量把视觉特征拆成可执行的形容词组合。
5.3 迭代式修正:我的一段真实对话记录
很少有一次性到位的生成。合理的预期是:第一版 70 分,然后通过两三轮迭代把分数拉到 90 以上。我分享一段真实的修正过程给你参考。
第一轮我说:“画一张折线图,展示某产品半年流量趋势,数据是 1 月 12 万、2 月 15 万、3 月 14 万、4 月 21 万、5 月 25 万、6 月 30 万。”
生成的图基本能看,但有两个问题:折线没有平滑处理,X 轴月份显示拥挤。第二轮我追加:“把折线改成平滑曲线,X 轴标签加粗并旋转 30 度,Y 轴单位显示‘万’,数据点加圆形标记,数值标签显示两位小数。”
第三轮我继续提:“背景改成浅灰,折线颜色换成蓝色,图例放在左下角,去掉网格线。”
三轮以后,图表已经非常接近我脑海里的预期。你要记住:修改意见一定要具体,一轮只讲几个关键点,不要一次给十多个互斥的修改指令。
6. 从零散的图到工作流:我的最终落地经验
文章写到这,核心方法已经全部交代了。最后分享一些我在实际工作中总结的落地经验,这些经验是我踩了不少坑之后才沉淀下来的。
6.1 常用模板沉淀:把提示词存成可复用资产
我在本地维护了一个“图表提示词模板”文档,按场景分成了十几个条目,比如“周报趋势折线图”“双轴对比图”“系统流程时序图”“项目排期甘特图”“数据分布箱线图”。每次验证有效的提示词,我就把它固化进模板,下次遇到类似需求,直接复制改写变量即可。
这一步的投资回报率非常高。三个月前我生成一张双轴图表还要反复澄清坐标轴关系,现在只需要从模板里复制一段已经验证过的提示词,把数据和标题替换掉,生成结果基本是稳定的。生产力不是你每次都从零想怎么问,而是你积累了多少可直接调用的高质量 prompt。
6.2 人机协作分工:AI 负责效率,人负责审美与逻辑
用 AI 生成图表久了,你会形成一种感觉:AI 擅长的是把需求变成实现,但需求里那些真正重要的判断,仍然需要人来把关。
数据关系是否正确、颜色选择是否考虑到色弱用户、图表类型是否准确反映数据含义、坐标轴是否从 0 开始避免误导——这些“领域审美”和“数据伦理”问题,AI 不会主动替你考虑。我在某次做数据汇报时,AI 生成的柱状图把 Y 轴默认从 9500 开始,视觉上把细微差距放大得很夸张,如果不是人工复查,这个图就会误导整个汇报方向。
所以我的分工原则是:AI 负责把想法变成草稿,人负责把关数据逻辑和呈现合理性。
6.3 最后的本分:生成结果一定要人工复核
无论 DeepSeek 生成的图表看起来多专业,我在交付前都会做三件事:对照原始数据抽查几个数据点的数值;检查坐标轴刻度是否合理;把图发给另一个不熟悉项目的人看一眼,确认信息没有误导。
这套复核流程三分钟以内就能完成,但能避免的麻烦无穷大。自然语言生成图表的本质是提升效率,而不是替代判断。工具越好用,你的判断责任越重大。
从手写配置到自然语言生成,这套工作流已经彻底改变了我处理图表的方式。我不再需要为“某功能怎么实现”操心,而把注意力放回“这张图到底想表达什么”这个真正有价值的问题上。如果你也经常被图表困住,不妨从今天开始,把你最常画的那种图,用自然语言描述给 DeepSeek 试试。