微信扫码
添加专属顾问
我要投稿
掌握ECharts,提升数据可视化技能,快速上手金融数据展示。 核心内容: 1. ECharts介绍及其在金融领域的应用 2. 上证综指5日K线可视化组件构建流程 3. Dify.AI Workflow引擎在数据可视化中的应用
ECharts是百度开源的可视化解决方案,基于ZRender矢量渲染引擎构建,提供跨平台、多端适配的交互式数据可视化能力。该库凭借其模块化架构与API设计,支持20余种主流图表类型及多维数据分析功能,在金融、物联网、商业智能等领域实现日均千万级调用。
作为当前国内应用最广的前端可视化工具链,ECharts 7.x版本通过以下技术特性持续领跑市场:
WebGL加速渲染引擎,可承载百万级数据点实时渲染
声明式配置语法,支持JSON Schema校验与智能提示
动态数据驱动机制,实现毫秒级增量更新
完善的响应式设计,适配从4K大屏到移动H5的全场景需求
本次我们将基于Dify.AI的Workflow引擎,构建上证综指5日K线可视化组件。话不多说我们先看一下实现效果。
工作流展示
首选我们先定义一个开始节点,这个开始节点需要设置1个文本上传输入参数,目前这个主要使用excel。所以我们设置文件类型。
按照上图设置一个file作为开始节点的输入参数。
这个地方我们需要接受开始节点上传的excel 文件,通过这个文档提取器提取文档里面的内容。输入变量是file
这个地方我们需要设置一个大语言模型,通过这个大语言模型提取 excel文本内容信息。这里模型我们选择deepseekv2.5的模型,使用硅基流动提供的deepseek模型,有的小伙伴可以问为什么不用v3 和R1模型呢?这里我们只提取文本内容,所以不需要非常厉害的模型。另外硅基最近流量比较大我们选个小模型这样反而速度更快点。
系统提示词
你是一个文档提取专家,请根据用户上传文档内容{{#1740472111460.text#}}提取该表格里面的数据返回json格式数据。
其中内容格式‘上证指数日线行情’、‘open’、‘high’、‘low’、‘close’、‘volume’字段返回信息,返回的结果信息以json格式返回
返回数据格式如下:
{
"上证指数日线行情": [
{
"date": "2025-02-19 00:00:00",
"open": 3320.78,
"high": 3352.09,
"low": 3320.58,
"close": 3351.54,
"volume": 50291300000
},
{
"date": "2025-02-20 00:00:00",
"open": 3347.59,
"high": 3355.56,
"low": 3338.03,
"close": 3350.78,
"volume": 50435700000
}
]
}
模型的其他设置这里没有过多讲解的地方。
这个地方是本次工作流的一个难点,主要的作用就是通过上个节点的大语言模型提取输出的json格式的数据通过python 代码和echarts来实现数据组装。
代码如下:
import json
import os
import re
def main(json_str: str) -> dict:
try:
# 预处理:清理非 JSON 部分
json_match = re.search(r'\{.*\}', json_str, re.DOTALL)
if not json_match:
return {"result": "Error: Invalid JSON format"}
# 提取合法的 JSON 部分
cleaned_json_str = json_match.group(0)
# 解析JSON数据
data = json.loads(cleaned_json_str)
filename = data.get("filename", "stock_chart.html")
stock_data = data.get("上证指数日线行情", [])
# 准备数据格式
dates = [item['date'].split(' ')[0] for item in stock_data] # 提取日期部分(去掉时间)
open_prices = [item['open'] for item in stock_data]
close_prices = [item['close'] for item in stock_data]
low_prices = [item['low'] for item in stock_data]
high_prices = [item['high'] for item in stock_data]
volumes = [item['volume'] / 1e8 for item in stock_data] # 转换为亿单位
# 构建ECharts配置
echarts_config = {
"title": {
"text": "上证指数日线行情"
},
"legend": {
"data": ["开盘价", "最高价", "最低价", "收盘价", "成交量"]
},
"tooltip": {},
"dataset": {
"source": [
["日期", "开盘价", "最高价", "最低价", "收盘价", "成交量"],
*[[dates[i], open_prices[i], high_prices[i], low_prices[i], close_prices[i], volumes[i]]
for i in range(len(dates))]
]
},
"xAxis": [
{"type": "category", "gridIndex": 0},
{"type": "category", "gridIndex": 1}
],
"yAxis": [
{
"gridIndex": 0,
"name": "价格趋势(单位:点)"
},
{
"gridIndex": 1,
"name": "成交量(单位:亿)"
}
],
"grid": [
{"bottom": "55%"},
{"top": "55%"}
],
"series": [
# 第一个网格中的折线图系列
{"type": "line", "seriesLayoutBy": "row", "name": "开盘价"},
{"type": "line", "seriesLayoutBy": "row", "name": "最高价"},
{"type": "line", "seriesLayoutBy": "row", "name": "最低价"},
{"type": "line", "seriesLayoutBy": "row", "name": "收盘价"},
# 第二个网格中的柱状图系列
{"type": "bar", "xAxisIndex": 1, "yAxisIndex": 1, "name": "成交量"}
]
}
# 生成输出文件
output = "```echarts\n" + json.dumps(echarts_config, indent=2, ensure_ascii=False) + "\n```"
# 返回结果
return {
"result": output
}
except Exception as e:
return {
"result": f"Error: {str(e)}"
}
输入参数 json_str 输入值是大语言模型llm string值
输出变量 result 数据类型是字符串string
这个地方就比较简单,因为上个节点把数据拼装好后,这里就直接显示就可以了。
以上我们就完成工作流的搭建。
上面制作好的工作流(chatflow) 就可以发布出去了
项目体验地址:http://dify.duckcloud.fun/chat/HesevIZjlbSYd4NM
为了方便演示我这里上传我的excel 测试数据。地址https://mypicture-1258720957.cos.ap-nanjing.myqcloud.com/Obsidian/%E8%82%A1%E7%A5%A8%E8%A1%A8%E6%A0%BC%E6%95%B0%E6%8D%AE.xls
相关资料和文档可以看我开源的项目 https://github.com/wwwzhouhui/dify-for-dsl
今天主要带大家了解了如何基于 Dify 的 Workflow 引擎构建上证综指 5 日 K 线可视化组件,详细介绍了使用 ECharts 实现股票价格趋势显示的工作流制作过程。介绍了 ECharts 作为百度开源的可视化解决方案的强大功能及技术特性。通过定义开始节点、使用文档提取器、配置 LLM 大语言模型、进行 echarts 代码转换生成以及直接回复等步骤,完成了工作流的搭建,并进行了验证和测试。还给出了项目体验地址及相关资料文档的开源项目地址。
53AI,企业落地大模型首选服务商
产品:场景落地咨询+大模型应用平台+行业解决方案
承诺:免费场景POC验证,效果验证后签署服务协议。零风险落地应用大模型,已交付160+中大型企业
2025-03-06
2024-09-04
2025-01-25
2024-09-26
2024-10-30
2024-09-03
2024-12-11
2024-12-25
2024-10-30
2025-02-18