dify打造数据可视化图表
一、概述
在日常工作和学习中,我们经常需要和数据打交道。无论是分析报告、项目展示,还是简单的数据洞察,一个清晰直观的图表,往往能胜过千言万语。
一款能让数据可视化变得超级简单的 MCP Server,由蚂蚁集团 AntV 团队开源的 mcp-server-chart
github地址:https://github.com/antvis/mcp-server-chart
目前已经支持超过 15 种我们常用的可视化图表类型,比如:
- 折线图、柱状图、饼图、面积图、条形图
- 直方图、散点图、矩阵树图、词云图、双轴图
- 雷达图、思维导图、网络图、流程图、鱼骨图
可以说,它几乎能满足我们日常工作中绝大多数场景的可视化需求。 最棒的是,它会以图片链接的形式返回生成结果,方便你嵌入到任何需要的地方。
二、MCP工具初体验
docker运行
mcp-server-chart官方已经封装好了镜像,docker hub地址:https://hub.docker.com/r/acuvity/mcp-server-chart
目前最新版本是0.4.0,运行一下
docker run -d --name mcp-server-chart -it -p 8000:8000 acuvity/mcp-server-chart:0.4.0
mcp-server-chart支持3种调用方式,分别是STDIO,SSE,streamable Http
Cherry Studio调用
这里以Cherry Studio客户端,来演示一下如何使用
添加MCP服务器
名称:mcp-server-chart
类型:streamable Http
地址:http://10.44.32.14:8000/mcp
添加完成后,查看工具列表
能看到几十个工具方法,就说明运行正常。
新建一个默认会话,选择mcp服务器
输入提示词:
根据诗人的名气以诗人的名字生成一个词云图,至少50位中国古代诗人,给出图片链接后再用Markdown语法直接展示。
效果如下:
整个过程,大模型就像一位经验丰富的设计师,不仅理解了你的需求,还自动帮你准备好了绘制图表所需的各种参数(比如图片的宽度、高度、标题等),最后给出了图片链接。
注意,这个链接,公网是可以打开的
https://mdn.alipayobjects.com/one_clip/afts/img/EKJYTr0ONCAAAAAAVvAAAAgAoEACAQFr/original
三、Dify+可视化图表MCP
目前有很多文章,一般都是通过Dify 结合数据库和 ECharts插件,实现数据可视化的。
但是实现过程比较复杂,首先通过数据库查询原始数据,其次通过python代码转换成 ECharts能够理解的图表格式,最后调用ECharts插件实现图表展示。
整个过程需要不少经验和技巧,一不小心就容易出错。
但是!有了 mcp-server-chart 这个 MCP 工具,事情就变得简单多了。
场景演示:用户用自然语言提问,我们通过 Dify 工作流从数据库里查询数据,并生成图表。
示例数据
为了方便演示,我用MySQL 数据库搭建了一些示例数据
新建表boxoffice
CREATE TABLE `boxoffice` (
`id` bigint NOT NULL,
`years` varchar(64) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
`movie_name` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
`score` float DEFAULT NULL,
`director` varchar(64) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
`box_office` float DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
插入数据
INSERT INTO boxoffice (id, years, movie_name, score, director, box_office) VALUES
(1, '2025', '哪吒之魔童闹海', 8.5, '饺子', 1467030),
(2, '2021', '长津湖', 7.6, '陈凯歌', 577524),
(3, '2017', '战狼2', 7.1, '吴京', 569456),
(4, '2021', '你好,李焕英', 8.1, '贾玲', 541372),
(5, '2019', '哪吒之魔童降世', 8.5, '饺子', 503557),
(6, '2019', '流浪地球', 7.9, '郭帆', 468814),
(7, '2023', '满江红', 7.8, '张艺谋', 454437),
(8, '2021', '唐人街探案3', 5.6, '陈思诚', 452392),
(9, '2019', '复仇者联盟4:终局之战', 8.5, '安东尼·罗素', 424889),
(10, '2022', '长津湖之水门桥', 7.2, '徐克', 406724),
(11, '2023', '流浪地球2', 8.2, '郭帆', 402869),
(12, '2023', '孤注一掷', 6.9, '申奥', 384848),
(13, '2018', '红海行动', 8.5, '林超贤', 365185),
(14, '2023', '消失的她', 6.8, '崔睿', 352396),
(15, '2025', '唐探1900', 6.6, '陈思诚', 348642),
(16, '2024', '热辣滚烫', 7.9, '贾玲', 346040),
(17, '2024', '飞驰人生2', 7.7, '韩寒', 339842),
(18, '2018', '唐人街探案2', 7.1, '陈思诚', 339769),
(19, '2016', '美人鱼', 6.8, '周星驰', 339211),
(20, '2024', '抓娃娃', 7.3, '闫非', 332751);
打开表,效果如下:
开始节点
新建一个空白应用
开始节点默认配置,接收用户问题。
需求提炼
分析用户问题,判断用户是否需要生成图表,提取出SQL查询的需求。
输出如下:
sql_requirement: [精炼后的数据查询需求]
need_chart: [是/否]
chart_type: [推荐的Echarts图表类型或“无”]
大模型选择DeepSeek-V3
注意:大模型必须选择DeepSeek-V3,选择其他模型可能会导致最后图表无法生成。
提示词如下:
你是一名专业的数据需求提炼师。 请仔细阅读用户的自然语言问题{{#context#}},只保留与数据查询直接相关的核心需求。自动忽略与数据查询无关的内容(如生成图表、导出Excel、制作报表等)。 请判断用户是否需要用图表展示结果。如果需要,请根据问题内容推荐最合适的Echarts图表类型(如area、bar、column、dual-axes、fishbone-diagram、flow-diagram、histogram、line、mind-map、network-graph、pie、radar、scatter、treemap、word-cloud等);如果不需要图表,请填写“无”。 请严格按照如下格式输出,不要有任何解释或多余内容:
sql_requirement: [精炼后的数据查询需求]
need_chart: [是/否]
chart_type: [推荐的Echarts图表类型或“无”]
参数提取器
把上一个节点的三个输出参数提取出来。
添加提取参数
第一个参数,内容如下
sql_requirement
sql需求
其他参数依次类推
need_chart
是否需要图表
chart_type
图表类型
最后效果如下:
自然语言转SQL(ROOKIE_TEXT2DATA)
打开插件市场,搜索关键字ROOKIE_TEXT2DATA,安装插件
添加节点,注意选择rookie text2data
这个节点的核心功能就是把用户的自然语言转成SQL语句了。
输入为提取后的SQL语句需求,关联参数提取节点的sql_requirement。
数据库配置: 正确填写数据库类型、IP、端口、库名、用户名、密码。
大模型:我这里必须用DeepSeek-V3
注意:这里的查询语句,选择变量sql_requirement。输入/就有下拉框
提示词如下:
表名:boxoffice
字段说明:
- id:id,int
- years:年份,int
- movie_name:电影名,string
- score:评分,float
- director:导演,string
- box_office:票房,int 注意事项:
- 如有分组统计,请使用SUM、AVG等聚合函数,不要直接用原始字段。
- 所有非聚合字段必须出现在GROUP BY中。
- 只输出SQL语句,不要解释。 示例查询:
1. 查询每个导演的总票房:SELECT director, SUM(box_office) FROM boxoffice GROUP BY director;
2. 查询每年票房最高的电影:SELECT years, movie_name, MAX(box_office) FROM boxoffice GROUP BY years;
数据库配置连接信息
注意返回格式,选择text
执行SQL
此节点负责连接数据库,并执行上一步生成的SQL语句。
输入变量:上一节点返回的SQL语句。
数据库配置: 正确填写数据库类型、IP、端口、库名、用户名、密码。
输出变量:返回数据格式为文本。
注意返回格式,选择text
注意,这里的执行sql语句,选择变量 ROOKIE TEXT2DATA.text
条件分支
判断是否需要图表,给到不同的分支。
图文总结
如果需要生成图表,走这个节点。
Agent策略选择ReAct(Support MCP Tools)
MCP服务器配置如下,url换成你自己的
{
"mcp-server-chart": {
"url": "http://10.44.32.14:8000/sse"
}
}
注意:这里必须是SSE模式,不能用streamable_http
为什么?因为插件Agent策略,不支持以streamable_http协议生成图表,但是SSE协议是支持的。
但是上面你明明用Cherry Studio客户端,可以生成图表了呀。
我们首先要理清一点,mcp-server-chart本身是支持以streamable_http协议生成图表
Cherry Studio是客户端,它更新快。那么插件Agent策略,它也是客户端,更新很慢。现在问题是插件目前不支持,怎么办?等插件更新就好了。
指令
注意选择ROOKIE EXCUTE SOL.text
查询
提示词如下:
根据给定的数据选择合适的工具生成相应的图表,图表类型参考 {{#1749119517859.chart_type#}}。如果有小数的话保留小数点后面2位就行。输出先用自然语言简要给出数据分析,给出图片链接地址,并展示图片,要求全部用中文回答。
注意:这里的提示词复制之后,需要手动替换一下里面的变量。 因为每一个人的变量id是不一样的。 我这里是1749119517859,你那里就不一样了。
手动替换好之后,效果如下:
文字总结
如果用户只是想查询数据,不需要图表,那么工作流就会走到这个相对简单的节点。它会根据数据库查询结果,用简洁的自然语言给出分析和意见。
模型,必须是DeepSeek-V3
上下文,选择变量rookie excute_sql.text
提示词如下:
请根据用户问题和查询结果,用简洁的中文自然语言回答并给出分析意见。
用户问题:{{#1749119517859.sql_requirement#}}
查询结果:{{#context#}}
注意:这里的提示词复制之后,需要手动替换一下里面的变量。 因为每一个人的变量id是不一样的。 我这里是1749119517859,你那里就不一样了。
替换好之后,就是上面的效果了。
回复节点
直接引用图文总结或文字总结的输出就好了。
四、测试
比如问一下各导演的票房占比,可以看到给出了分析结果和图片链接地址。
各导演的票房占比是多少?
图片链接可以直接打开:https://mdn.alipayobjects.com/one_clip/afts/img/qUhrTLIUAWEAAAAASRAAAAgAoEACAQFr/original
在测试一下折线图。
请用图表展示历年票房变化
打开图表链接:https://mdn.alipayobjects.com/one_clip/afts/img/LX_NRqh9-FIAAAAARrAAAAgAoEACAQFr/original
五、AntV插件的使用
除了MCP工具,在插件市场搜索antv可以看到蚂蚁集团提供的这个可视化工具插件。
和mcp server一样,也是支持了15种工具。
创建一个Agent
添加这些工具
提示词如下:
根据用户提供的数据选择相应的工具生成可视化图表。
展示图片的时候先给出图片的链接地址,后直接展示图片。
回复全部使用中文回答。
最终效果如下:
注意确保有生成词云图
我们就可以随便用自然语言让大模型给出相应的图表了。
我让它生成了一个《三体》小说的人物词云图。
生成一个三体小说主要人物的词云图。至少列举出30个主要人物来。
插件不支持插入图片,手动打开图片:https://mdn.alipayobjects.com/one_clip/afts/img/3-8JSqF4yhUAAAAASXAAAAgAoEACAQFr/original
当然了,你也可以在工作流中调用这些工具。
和其他的生成图表的插件类似,给出对应的数据。
不过,这个插件可以更方便的调整图表的大小。自定义图表的宽和高。
点击设置
可以设置宽高
这些“底层轮子”的不断涌现,无疑是一件大好事。
它们让我们能够从繁琐的、重复性的底层技术实现中解放出来,更专注于业务逻辑本身,更聚焦于如何创造真正的价值。
本文参考链接:https://zhuanlan.zhihu.com/p/1911538446977176761
dify打造数据可视化图表的更多相关文章
- Webstorm+Webpack+echarts构建个性化定制的数据可视化图表&&两个echarts详细教程(柱状图,南丁格尔图)
Webstorm+Webpack+echarts ECharts 特性介绍 ECharts,一个纯 Javascript 的图表库,可以流畅的运行在 PC 和移动设备上,兼容当前绝大部分浏览器(I ...
- ECharts-基于Canvas,纯Javascript图表库,提供直观,生动,可交互,可个性化定制的数据可视化图表
ECharts http://ecomfe.github.com/echarts 基于Canvas,纯Javascript图表库,提供直观,生动,可交互,可个性化定制的数据可视化图表.创新的拖拽重计算 ...
- Python调用matplotlib实现交互式数据可视化图表案例
交互式的数据可视化图表是 New IT 新技术的一个应用方向,在过去,用户要在网页上查看数据,基本的实现方式就是在页面上显示一个表格出来,的而且确,用表格的方式来展示数据,显示的数据量会比较大,但是, ...
- 数据可视化图表ECharts
介绍: ECharts是一个基于ZRender(轻量级Canvas类库)的纯javascript图表库,提供可交互.个性化的数据可视化图表. ECharts提供了折线图.柱状图.散点图.饼图.K线图, ...
- Excel数据可视化图表设计需要注意的几个问题
大数据发展迅速的时代,数据分析驱动商业决策.对于庞大.无序.复杂的数据要是没经过合适的处理,价值就无法体现. 可以想象一本没有图片的教科书.没有图表.图形或是带有箭头和标签的插图或流程图,那么这门学 ...
- 百度数据可视化图表套件echart实战
最近我一直在做数据可视化的前端工作,我用的最多的绘图工具是d3.d3有点像photoshop,功能很强大,例子也很多,但是学习成本也不低,做项目是需要较大人力投入的.3月底由在亚马逊工作的同学介绍下使 ...
- 数据分析 | 数据可视化图表,BI工具构建逻辑
本文源码:GitHub·点这里 || GitEE·点这里 一.数据可视化 1.基础概念 数据可视化,是关于数据视觉表现形式的科学技术研究.其中,这种数据的视觉表现形式被定义为,一种以某种概要形式抽取出 ...
- 📈📈📈📈📈iOS 图表框架 AAChartKit ---强大的高颜值数据可视化图表框架,支持柱状图、条形图、折线图、曲线图、折线填充图、曲线填充图、气泡图、扇形图、环形图、散点图、雷达图、混合图
English Document
- 开源来自百度商业前端数据可视化团队的超漂亮动态图表--ECharts
开源来自百度商业前端数据可视化团队的超漂亮动态图表--ECharts 本人项目中最近有需要图表的地方,偶然发现一款超级漂亮的动态图标js图表控件,分享给大家,觉得好用的就看一下.更多更漂亮的演示大家可 ...
- 开源的数据可视化JavaScript图表库:ECharts
ECharts (Enterprise Charts 商业产品图表库)是基于HTML5 Canvas的一个纯Javascript图表库,提供直观,生动,可交互,可个性化定制的数据可视化图表.创新的拖拽 ...
随机推荐
- AI 智能体引爆开源社区「GitHub 热点速览」
最近很火的 Manus 智能体是一款将你的想法转化为行动的工具,能够处理生活中的各种任务.一经发布便迅速走红,并间接引爆了开源社区. 这也导致上榜的全是 AI 智能体开源项目,比如无需邀请码的开源版 ...
- vuepress-reco搭建与部署指南
个人博客:槿苏的知识铺 一.前言 在技术飞速发展的今天,高效地编写.维护和呈现文档已成为开发者不可或缺的能力.无论是开源项目.团队协作还是个人知识沉淀,一套结构清晰.体验优雅的文档系统都能显著提升 ...
- Ollama——大语言模型本地部署的极速利器
1.概述 Ollama 是一款开源跨平台大模型工具,主要用于在本地便捷部署和运行大型语言模型(LLM),核心目标是降低用户使用大模型的门槛,同时保障数据隐私.核心功能与特点如下: (1)本地部署,隐私 ...
- BGP路由优选原则
0 丢弃下一跳不可达的路由 1 优选Preference_Value值最高的路由(本设备有效) Pref-Val:协议首选值 华为私有的属性,只具有本地(本设备)意义,缺省情况下为0,越大越优,0-6 ...
- Joker 智能开发平台再推重磅新品,引领开发新潮流
自 Joker 智能开发平台的前端可视化版本惊艳亮相后,便迅速在行业内掀起热潮,其创新的理念与出色的性能,为开发者和企业打造了高效.便捷的开发新路径,备受瞩目与好评.如今,Joker 智能开发平台即将 ...
- exGCD 2025/1/10
前言: 全文均为蒟蒻作者手搓 虽也参考了许多 [luogu 题解/某SDN/cnblogs.com] 但很多地方均为作者瞎编 如有错误务必救救孩子 File int GCD(int a,int b){ ...
- 【SpringMVC】数据转换 & 数据格式化
数据转换 & 数据格式化 & 数据校验 数据转换 数据绑定流程 Spring MVC 主框架将 ServletRequest 对象及目标方法的入参实例传递给 WebDataBinder ...
- 什么是RESTful 或 GraphQL?
RESTful 与 GraphQL 深度解析 在前端的开发过程中,相信 everyone 对 Get.POST 等请求方式都很熟悉,那么这些请求是归于哪种架构或者设计风格可能又不是很熟.现在在这简单的 ...
- SMU Autumn 2024 Trial 1
A. Load Balancing 很明显题意要的就是让我们把每个数往平均值靠,这样就保证最大值-最小值最小 但是当sum%n !=0的时候就说明无法每个数都等于sum/n,所以处理的方法就是,先计算 ...
- 在SqlSugar的开发框架中增加对低代码EAV模型(实体-属性-值)的WebAPI实现支持
我在前面随笔中介绍了在SqlSugar的开发框架中实现EAV模型(实体-属性-值)的处理,这个EAV模型实现的目的是支持弹性化的数据库设计,可以自由扩展数据库表字段和数据的查询和存储,实现的思路是在常 ...