【AI智能体】Dify集成 Echarts实现数据报表展示实战详解
以上代码实现了一个完整的Dify集成ECharts的数据报表解决方案,从数据获取到前端展示的全流程。图表可以根据实际业务需求扩展更多类型和交互功能。以上代码实现了一个完整的Dify集成ECharts的数据报表解决方案,从数据获取到前端展示的全流程。图表可以根据实际业务需求扩展更多类型和交互功能。
·
集成ECharts实现数据报表展示
以下是一个完整的Dify集成ECharts实现数据报表展示的实战代码示例,包含数据获取、图表配置和渲染逻辑:
from dify.client import DifyClient
import json
from pyecharts.charts import Bar
from pyecharts import options as opts
# 初始化Dify客户端
dify_client = DifyClient(api_key="your_api_key")
# 获取分析数据
def fetch_analysis_data():
response = dify_client.post(
"/analyze",
json={
"metrics": ["user_count", "order_count"],
"time_range": "last_7_days"
}
)
return json.loads(response.text)
# 处理数据并生成图表
def generate_chart():
data = fetch_analysis_data()
# 提取日期和数据
dates = [item["date"] for item in data]
user_counts = [item["user_count"] for item in data]
order_counts = [item["order_count"] for item in data]
# 创建柱状图
bar = (
Bar()
.add_xaxis(dates)
.add_yaxis("用户数", user_counts)
.add_yaxis("订单数", order_counts)
.set_global_opts(
title_opts=opts.TitleOpts(title="7日数据分析"),
tooltip_opts=opts.TooltipOpts(trigger="axis"),
legend_opts=opts.LegendOpts(pos_top="5%"),
datazoom_opts=[opts.DataZoomOpts()]
)
)
# 渲染图表到HTML文件
bar.render("analysis_report.html")
return "analysis_report.html"
# 主执行函数
if __name__ == "__main__":
chart_path = generate_chart()
print(f"图表已生成,路径:{chart_path}")
前端展示集成
在Dify应用中集成ECharts前端展示的React组件代码:
import React, { useEffect, useRef } from 'react';
import * as echarts from 'echarts';
const DataReport = ({ apiData }) => {
const chartRef = useRef(null);
useEffect(() => {
if (!apiData || !chartRef.current) return;
const chart = echarts.init(chartRef.current);
const option = {
tooltip: {
trigger: 'axis',
axisPointer: { type: 'shadow' }
},
legend: {
data: ['用户数', '订单数']
},
grid: {
left: '3%',
right: '4%',
bottom: '3%',
containLabel: true
},
xAxis: {
type: 'category',
data: apiData.map(item => item.date)
},
yAxis: { type: 'value' },
series: [
{
name: '用户数',
type: 'bar',
data: apiData.map(item => item.user_count)
},
{
name: '订单数',
type: 'bar',
data: apiData.map(item => item.order_count)
}
]
};
chart.setOption(option);
return () => {
chart.dispose();
};
}, [apiData]);
return <div ref={chartRef} style={{ width: '100%', height: '400px' }} />;
};
export default DataReport;
后端API数据接口
为前端提供数据API的FastAPI实现:
from fastapi import FastAPI
from fastapi.middleware.cors import CORSMiddleware
from dify.client import DifyClient
import json
app = FastAPI()
dify_client = DifyClient(api_key="your_api_key")
# 允许跨域
app.add_middleware(
CORSMiddleware,
allow_origins=["*"],
allow_methods=["*"],
allow_headers=["*"],
)
@app.get("/api/analysis-data")
async def get_analysis_data():
response = dify_client.post(
"/analyze",
json={
"metrics": ["user_count", "order_count"],
"time_range": "last_7_days"
}
)
return json.loads(response.text)
配置说明
-
需要安装的Python依赖:
pip install dify-client pyecharts fastapi uvicorn
-
前端需要安装的依赖:
npm install echarts
-
运行后端服务:
uvicorn main:app --reload
-
图表交互功能包含:
- 数据缩放
- 悬停提示
- 图例切换
- 响应式布局
以上代码实现了一个完整的Dify集成ECharts的数据报表解决方案,从数据获取到前端展示的全流程。图表可以根据实际业务需求扩展更多类型和交互功能。
集成ECharts实现数据报表展示
以下是一个完整的Dify集成ECharts实现数据报表展示的实战代码示例,包含数据获取、图表配置和渲染逻辑:
from dify.client import DifyClient
import json
from pyecharts.charts import Bar
from pyecharts import options as opts
# 初始化Dify客户端
dify_client = DifyClient(api_key="your_api_key")
# 获取分析数据
def fetch_analysis_data():
response = dify_client.post(
"/analyze",
json={
"metrics": ["user_count", "order_count"],
"time_range": "last_7_days"
}
)
return json.loads(response.text)
# 处理数据并生成图表
def generate_chart():
data = fetch_analysis_data()
# 提取日期和数据
dates = [item["date"] for item in data]
user_counts = [item["user_count"] for item in data]
order_counts = [item["order_count"] for item in data]
# 创建柱状图
bar = (
Bar()
.add_xaxis(dates)
.add_yaxis("用户数", user_counts)
.add_yaxis("订单数", order_counts)
.set_global_opts(
title_opts=opts.TitleOpts(title="7日数据分析"),
tooltip_opts=opts.TooltipOpts(trigger="axis"),
legend_opts=opts.LegendOpts(pos_top="5%"),
datazoom_opts=[opts.DataZoomOpts()]
)
)
# 渲染图表到HTML文件
bar.render("analysis_report.html")
return "analysis_report.html"
# 主执行函数
if __name__ == "__main__":
chart_path = generate_chart()
print(f"图表已生成,路径:{chart_path}")
前端展示集成
在Dify应用中集成ECharts前端展示的React组件代码:
import React, { useEffect, useRef } from 'react';
import * as echarts from 'echarts';
const DataReport = ({ apiData }) => {
const chartRef = useRef(null);
useEffect(() => {
if (!apiData || !chartRef.current) return;
const chart = echarts.init(chartRef.current);
const option = {
tooltip: {
trigger: 'axis',
axisPointer: { type: 'shadow' }
},
legend: {
data: ['用户数', '订单数']
},
grid: {
left: '3%',
right: '4%',
bottom: '3%',
containLabel: true
},
xAxis: {
type: 'category',
data: apiData.map(item => item.date)
},
yAxis: { type: 'value' },
series: [
{
name: '用户数',
type: 'bar',
data: apiData.map(item => item.user_count)
},
{
name: '订单数',
type: 'bar',
data: apiData.map(item => item.order_count)
}
]
};
chart.setOption(option);
return () => {
chart.dispose();
};
}, [apiData]);
return <div ref={chartRef} style={{ width: '100%', height: '400px' }} />;
};
export default DataReport;
后端API数据接口
为前端提供数据API的FastAPI实现:
from fastapi import FastAPI
from fastapi.middleware.cors import CORSMiddleware
from dify.client import DifyClient
import json
app = FastAPI()
dify_client = DifyClient(api_key="your_api_key")
# 允许跨域
app.add_middleware(
CORSMiddleware,
allow_origins=["*"],
allow_methods=["*"],
allow_headers=["*"],
)
@app.get("/api/analysis-data")
async def get_analysis_data():
response = dify_client.post(
"/analyze",
json={
"metrics": ["user_count", "order_count"],
"time_range": "last_7_days"
}
)
return json.loads(response.text)
配置说明
-
需要安装的Python依赖:
pip install dify-client pyecharts fastapi uvicorn
-
前端需要安装的依赖:
npm install echarts
-
运行后端服务:
uvicorn main:app --reload
-
图表交互功能包含:
- 数据缩放
- 悬停提示
- 图例切换
- 响应式布局
以上代码实现了一个完整的Dify集成ECharts的数据报表解决方案,从数据获取到前端展示的全流程。图表可以根据实际业务需求扩展更多类型和交互功能。
更多推荐
所有评论(0)