n8n工作流自动化平台的实操:生成统计图的两种方式

1.成果展示

1.1n8n的工作流

牵涉节点:Postgres、Code、QuickChart、Edit Fields、HTTP Request

12.显示效果

2.实操过程

2.1节点说明

2.1.1Postgres节点:

注:将明细数据进行汇总。

2.1.2code节点:

注:将 查询的数据转换成QuickChart需要的格式,代码如下:

复制代码
let data = $input.all();
let rawData = data.map(item => item.json);

// 按年份分组数据
const groupedData = rawData.reduce((acc, item) => {
    if (!acc[item.nf]) acc[item.nf] = [];
    acc[item.nf].push({ month: item.yf, value: parseInt(item.sl) });
    return acc;
}, {});

// 构建完整的12个月份列表,作为 X 轴标签
const allMonths = Array.from({ length: 12 }, (_, i) => {
    const month = (i + 1).toString().padStart(2, '0'); // 01 - 12
    return month;
});

// 构建 QuickChart 需要的 chartData 格式
const chartData = {
    type: 'line',
    data: {
        labels: allMonths, // 使用完整12个月作为 X 轴
        datasets: Object.keys(groupedData).map(year => {
            // 补全缺失月份的数据为 null(图表上该点为空)
            const values = allMonths.map(month => {
                const found = groupedData[year].find(d => d.month === month);
                return found ? found.value : null;
            });

            return {
                label: `${year}年 事故起数`,
                data: values,
                borderColor: getRandomColor(),
                fill: false,
                pointRadius: values.map(v => v !== null ? 3 : 0), // 可选:隐藏空值点
            };
        })
    },
    options: {
        responsive: true,
        scales: {
            xAxes: [{
                scaleLabel: {
                    display: true,
                    labelString: '月份'
                }
            }],
            yAxes: [{
                ticks: {
                    beginAtZero: true
                },
                scaleLabel: {
                    display: true,
                    labelString: '事故起数'
                }
            }]
        }
    }
};

// 随机颜色生成函数
function getRandomColor() {
    const r = Math.floor(Math.random() * 256);
    const g = Math.floor(Math.random() * 256);
    const b = Math.floor(Math.random() * 256);
    return `rgba(${r},${g},${b},1)`;
}

return chartData;

2.1.3Edit Fields节点:

注:将json对象转换成字符串,主要图中的红框。

2.1.4HTTP Request节点:

注:通过https://quickchart.io/chart?width=650\&height=450\&c={{ $json.data }}实现图片的生成,图中红框部分。

通过 QuickChart节点,最后也是转成url地址。因此不能在无互联网的环境下生成图片,希望有缘人提供更好的思路。

2.1.5QuickChart节点:

注:生成单曲线,单柱状图,通过 QuickChart节点没有问题,如果有上传多条曲线,则无法实现,只能通过https://quickchart.io/chart?width=650\&height=450\&c={{ $json.data }}方式实现。

相关推荐
千桐科技2 天前
qKnow 智能体构建平台开源版 2.1.1 正式发布!优化非结构化抽取、知识库召回,全面升级系统稳定性与交互体验
大模型·llm·工作流·qknow·智能体构建平台
不正经绣才2 天前
【扣子Coze教程】1分钟提取500+小红书笔记评论,自动同步飞书(附源码)
飞书·教程·工作流·coze·扣子
Irissgwe2 天前
十、LangGraph能力详解(1)LangGraph介绍及核心概念
python·ai·langchain·ai编程·工作流·langgraph
三无推导5 天前
《n8n self-hosted-ai-starter-kit 安装部署教程:用 Docker Compose 快速搭建本地 AI 工作流环境》
人工智能·docker·容器·持续部署·ollama·ai工作流·n8n
m_sophia8 天前
Dify搭建数据可视化工作流
信息可视化·工作流·dify
名不经传的养虾人10 天前
从0到1:企业级AI项目迭代日记 Vol.29|自然语言变工作流:Agent 自动拼装子图的实现路径
人工智能·agent·ai编程·工作流·ai创业·企业ai
组合缺一12 天前
Solon Flow 实战:用 50 行 YAML 实现一个请假审批流(含中断恢复、并行网关、条件分支)
java·solon·工作流·审批流·solon-flow·流程编排
带刺的坐椅12 天前
Solon Flow 实战:用 50 行 YAML 实现一个请假审批流(含中断恢复、并行网关、条件分支)
java·solon·工作流·审批流·流程编排
云策数链12 天前
ERP工作流引擎设计与实现
erp·工作流·用友·云策数链
元拓数智17 天前
AI 自动化工作流,正在重塑企业数据工程的效率边界
大数据·人工智能·ai·自动化·工作流·数据工程