☰
DeepSeek自然语言生成图表:ECharts、Mermaid与Python实战
2026/10/18 19:22:23 网站建设 项目流程

我先坦白一个转变:以前我做图表,流程是“打开工具→翻文档→查配置→调样式”,一张图少说折腾半小时。现在我的流程变成了“用大白话描述需求→交给 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 + EChartsDeepSeek + MermaidDeepSeek + 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 在搭建这条链路上的作用非常明显。

我搭建的一个典型链路是这样的:

  1. 用 pandas 读取最新导出的数据文件;
  2. 用 matplotlib / seaborn 生成 4~6 张固定图表;
  3. 用 reportlab 或 jinja2 + weasyprint 把图表和图文字说明拼装成 PDF 报告;
  4. 自动在本地生成带日期的报告文件夹。

这个过程里,我只需要在最开始把全链路的需求描述给 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 画图,都会在提示词里覆盖这五个要素,你可以直接抄走:

  1. 图类型:柱状图、折线图、散点图、流程图、时序图……一句话说死。
  2. 数据来源:直接把数据粘贴进来,或者明确告诉它 CSV 文件路径。
  3. 视觉要求:颜色、字体、图例位置、数据标签、主题风格。
  4. 最终产物:HTML 文件、Mermaid 代码、Python 脚本、PNG 图片。
  5. 约束条件:中文显示、内网环境、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 试试。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询