你有没有遇到过这种情况:
你跟AI说:"帮我画个柱状图,展示每个季度的收入。"
它画了。你一看:坐标轴不对、刻度不对、标签不对、颜色不对。你跟它说"改一下",它改了,改完又冒出新问题。
折腾半天,你还不如自己写个ECharts配置。
这不是AI笨,这是AI画图表的方式有问题。

以前AI画图表的痛苦
现在让AI画图表,通常是这样的:
你跟它说:"帮我画个柱状图。"
它直接生成一个ECharts配置,或者一个Vega-Lite配置。这个配置里包含了:
-
数据是什么
-
图表类型是什么
-
坐标轴怎么画
-
刻度怎么标
-
标签放哪里
-
间距多少
-
颜色用什么
-
图例放哪里
问题来了:AI要同时搞定这么多细节,它很容易出错。
它不知道这个字段是"月份"还是"年份"。它把月份当成类别画在X轴上,结果排序错了。
它不知道这个数字是"收入"还是"增长率"。它把增长率当成绝对数值画,结果坐标轴刻度错了。
它不知道这个图表应该用什么主题。它画出来的图表风格和你的网站完全不搭。
这就像你让一个不会画画的人帮你画海报------他能画出来,但细节全是错的。
举个例子:以前用AI画图表有多痛苦
假设你有一份数据:每个季度、每个地区的收入。
你跟AI说:"帮我画个分组柱状图,X轴放季度,Y轴放收入,颜色按地区分。"
AI写了一个ECharts配置。你一看:
-
X轴的季度排序错了------它按字母排,Q1、Q2、Q3变成了Q1、Q3、Q2
-
Y轴从10万开始,不是从0开始------柱子高度看不出差异
-
图例放在图表里面,挡住了柱子
-
颜色用的是默认色,和你网站的配色完全不搭
你跟它说"改一下",它改了。改完你又发现:标签重叠了、柱子间距太窄了、数字格式不对(应该显示"12.5万"而不是"125000")。
折腾了10分钟,你还不如自己手写一个ECharts配置。
问题出在哪?
问题出在AI不知道这些数据的"语义"------它不知道"quarter"是时间,应该按时间顺序排;它不知道"revenue"是金额,应该从0开始画;它不知道你的网站用什么配色。
它只是在"猜"------猜这个字段是什么意思,猜坐标轴应该怎么排,猜颜色应该用什么。猜错了,你就得反复改。
Flint Chart的做法:AI只写数据,编译器画图表
Flint Chart是微软刚开源的一个项目。它的思路很简单:既然AI不擅长处理图表的细节,那就别让AI处理。
它把画图表这件事拆成了两部分:
AI负责:写数据是什么、图表类型是什么、每个字段是什么意思。
编译器负责:处理坐标轴、刻度、标签、间距、颜色、图例、布局。
简单说:AI只写"我要画什么",编译器画"怎么画"。

它是怎么工作的
整个流程是这样的:
第一步:AI写Spec。
你跟AI说:"帮我画个柱状图,展示每个季度的收入。"
AI写一个Flint Spec------一段JSON,包含:
-
数据:每个季度的收入数字
-
语义类型:quarter是"季度",revenue是"收入"
-
图表类型:分组柱状图
-
编码:X轴放quarter,Y轴放revenue,颜色按region分
第二步:编译器编译。
Flint编译器拿到这个Spec,它会自动处理:
-
坐标轴:X轴怎么排、Y轴刻度怎么标
-
标签:标签放哪里、要不要旋转
-
颜色:用什么配色方案
-
图例:图例放哪里
-
间距:柱子之间间距多少
-
主题:用哪个主题的风格
第三步:渲染到后端。
编译完之后,它可以输出到5个后端中的任何一个:
-
Vega-Lite:数据分析领域最流行的图表语法
-
ECharts:百度开源的国内最流行的图表库
-
Chart.js:最简单的HTML5图表库
-
Plotly:科学计算领域的交互式图表
-
Excel原生图表:直接生成Excel图表
你写一次Spec,它可以同时渲染成ECharts网页图表、Excel图表、Plotly图表。你不用为每个后端写不同的配置。
它的核心设计:语义类型
Flint Chart最聪明的设计,是它让AI告诉编译器每个字段是什么意思。
比如你的数据里有个字段叫"quarter",AI在写Spec的时候会告诉编译器:这个字段是"季度"(YearMonth类型)。
编译器知道了,它就会自动:
-
把季度按时间顺序排,不是按字母排
-
X轴标签自动旋转,防止重叠
-
刻度自动按季度标,不是按1、2、3标
再比如你的数据里有个字段叫"revenue",AI告诉编译器:这个字段是"收入"(Profit类型)。
编译器知道了,它就会自动:
-
Y轴从0开始画,不是从10万开始
-
数字格式自动加"万"或"亿",不是显示125000
-
配色用适合"收入"的颜色方案
这就是"语义类型"------AI不只告诉编译器"这个字段叫quarter",它还告诉编译器"这个字段是季度"。编译器知道了语义,就能自动处理所有细节。
这就像你跟装修公司说"我要北欧风格",而不是说"我要白色的墙、原木色的地板、黑色的灯"。装修公司知道了"北欧风格",它自己会搞定所有细节。
它和AI直接画图表有啥不一样
你可能会问:我直接让AI写ECharts配置不行吗?为啥要用Flint?
AI直接写ECharts配置:
AI要同时处理数据、图表类型、坐标轴、刻度、标签、间距、颜色、图例------一堆细节。它很容易出错。
用Flint:
AI只写数据是什么、图表类型是什么、字段是什么意思。剩下的全交给编译器。
编译器是确定性的------它知道怎么画坐标轴、怎么标刻度、怎么排标签。它不会犯AI那种"把月份当成类别"的错误。
简单说:AI负责"想画什么",编译器负责"怎么画"。AI不擅长的细节,交给确定性的编译器处理。
国内开发者怎么用
第一步:装npm包。
bash
npm install @microsoft/flint-chart
第二步:写Spec。
你可以手写Spec,也可以让AI帮你写。AI写Spec很简单------它只需要知道数据是什么、图表类型是什么、字段是什么意思。
第三步:编译并渲染。
用Flint编译器把Spec编译成你需要的后端格式(ECharts、Vega-Lite、Plotly等)。
关于国内图表库:
Flint原生支持ECharts------这是国内最流行的图表库。你写一次Flint Spec,它可以直接编译成ECharts配置,不用你自己写ECharts配置。
关于MCP:
Flint提供了一个MCP服务器。如果你用Claude Code、Cursor这些AI编程助手,它们可以通过MCP直接调用Flint------你跟它说"帮我画个图",它直接调用Flint生成图表,不用你手动写Spec。
关于国内AI助手:
如果你用通义灵码、Qwen Code这些国内AI编程助手,只要它们支持MCP,理论上也能接Flint。具体能不能用,得看它们的MCP生态。
它不是万能的
好的地方:
-
解决了一个真实痛点。AI画图表总是画不对,这个项目帮你搞定
-
AI只写数据,编译器画图表。分工明确,各干各擅长的事
-
一次Spec,5个后端。写一次,同时输出ECharts、Vega-Lite、Chart.js、Plotly、Excel图表
-
语义类型驱动。AI告诉编译器这个字段是"月份"还是"收入",编译器自动处理坐标轴和刻度
-
微软官方出品,有论文(arXiv 2607.20775)
-
MCP兼容。可以直接接到AI编程助手上
要注意的地方:
-
它是给程序员用的。如果你不是程序员,这个工具对你没用
-
它不帮你拿数据。你得自己准备好数据,它只负责画图
-
它支持52种图表类型,但不是所有图表类型在所有后端都支持。有些图表只能在Vega-Lite上画,ECharts上画不出来
-
它是一个中间语言。你得学它的Spec格式,不像直接写ECharts配置那么直观
-
它1.0刚发布(2026年10月21日),还很新,可能有bug
我觉得这个项目最有意思的地方,是它承认了一个事实:AI不擅长处理图表的细节。
以前我们让AI画图表,是让它"全包"------数据、坐标轴、刻度、标签、颜色、图例全让它搞定。结果就是它什么都做了,但什么都做不对。
Flint Chart的做法是把这件事拆开:AI负责"想画什么",编译器负责"怎么画"。AI不擅长的细节,交给确定性的编译器处理。
这就像你装修房子------你负责"我要什么风格",装修公司负责"怎么施工"。你不用自己去刷墙、铺地板。
如果你经常让AI画图表,又经常觉得它画的图不对,这个工具真的值得试试。