chartjs-reporter

Polar Sponsor
爱发电 赞助
.NET 9.0

此技能用于在用户需要将结构化数据(查询结果、CSV 摘要、JSON 记录或 Python 字典/列表)转换为独立的 HTML 页面时使用。

chartjs-reporter — Chart.js HTML 可视化报告生成技能

功能概述

chartjs-reporter — Chart.js HTML 可视化报告生成技能是一项面向实际任务的技能,主要用于将结构化数据(SQL 查询结果、CSV 摘要、Python dict/list、手动提供的表格)转换为;自包含的 HTML 可视化报告 ,内嵌 Chart.js 图表和 KPI 卡片,无需服务器;

核心要点

  • 浏览器直接打开即可查看;
  • 以下任意一种情况触发本技能:;
  • 用户提供了数据并要求"出图"、"可。

使用与执行

它将相关步骤、工具调用和结果整理方式集中到统一流程中,帮助使用者更快完成目标并减少重复操作。从功能定位来看,该技能强调把分散的操作要求整理成清晰、可复用的处理流程,使用户能够围绕既定目标快速准备输入、选择执行方式并获得结构化结果。实际使用前应先确认任务范围、数据来源、运行环境、必要权限和关键参数,再依据技能说明逐步执行;若输入条件不完整,应先补齐信息或采用保守配置,避免因错误假设导致结果偏离需求。

结果检查与注意事项

执行过程中需要关注工具调用是否成功、接口或依赖是否可用、输出格式是否符合预期,并对异常提示、缺失字段和边界情况进行处理;涉及批量任务时,还应保存进度,避免中断后重复操作。该技能适合用于一次性任务,也可以接入自动化工作流,与其他技能或上层代理配合完成更完整的业务链路;在组合使用时,应明确每一步的输入输出关系,并避免不同步骤之间出现参数冲突。

chartjs-reporter — Chart.js HTML 可视化报告生成技能

技能目的

将结构化数据(SQL 查询结果、CSV 摘要、Python dict/list、手动提供的表格)转换为 自包含的 HTML 可视化报告,内嵌 Chart.js 图表和 KPI 卡片,无需服务器, 浏览器直接打开即可查看。

触发条件

以下任意一种情况触发本技能:

  • 用户提供了数据并要求"出图"、"可视化"、"生成报告"
  • 用户已有 DuckDB / SQL / pandas 查询结果,需要图表化展示
  • 用户指定了图表类型(饼图、柱状图、折线图等)+ 数据
  • 与 chat2duckdb 技能配合:查询完成后生成可视化报告

操作步骤

步骤 1:理解数据结构

收到数据后,确认以下信息:

  • 数据形态:数值列 / 分类列 / 时间列
  • 分析目的:占比 / 趋势 / 对比 / 排名
  • 期望图表类型(用户未指定时,按照「图表选型规则」自动选择)

步骤 2:选择图表类型

分析目的 推荐图表
占比 / 构成 doughnut(≤6类)/ pie
趋势 / 时间序列 line(fill: true 显示面积)
分类对比(≤8项) bar(垂直)
分类对比(>8项或标签长) bar(水平,indexAxis: 'y')
多指标对比 分组 bar
排名 Top N 水平 bar + 进度条
关键指标摘要 KPI 卡片(非图表)

步骤 3:调用生成脚本

使用 scripts/generate_report.py 生成 HTML 报告:

python scripts/generate_report.py 
  --title "报告标题" 
  --subtitle "副标题说明" 
  --data '{"charts": [...], "kpis": [...]}' 
  --output report.html

也可以直接在 Python 中调用(适合与 chat2duckdb 配合):

from scripts.generate_report import build_report
html = build_report(title, subtitle, kpis, charts)
with open("report.html", "w", encoding="utf-8") as f:
    f.write(html)

步骤 4:数据格式规范

kpis 列表(可选,顶部 KPI 卡片):

[
  {"label": "总营收", "value": "¥1,755,905", "sub": "全年累计", "color": "green"},
  {"label": "订单数", "value": "200",         "sub": "5 品类",  "color": "blue"}
]

color 可选值:blue | green | yellow | purple | red

charts 列表(图表配置):

[
  {
    "type": "doughnut",
    "title": "品类营收占比",
    "labels": ["Food", "Electronics", "Sports"],
    "datasets": [{"data": [456833, 351665, 349967]}]
  },
  {
    "type": "line",
    "title": "月度趋势",
    "labels": ["1月","2月","3月"],
    "datasets": [{"label": "营收", "data": [158495, 185560, 98369]}]
  }
]

支持的 type 值:bar | line | doughnut | pie | horizontalBar(自动转 bar + indexAxis:y)

步骤 5:布局规则

  • KPI 卡片行:最多 4 列,超出自动换行
  • 图表区:默认 2 列网格;1 个图表时全宽;3 个图表时 3 列
  • 每张图表高度固定 240px,响应式宽度
  • 表格(Top N 排名):单独一行,全宽显示
  • 页脚:说明数据来源和生成时间

步骤 6:输出与展示

  • 输出路径默认为用户提供的路径,或 ./report_.html
  • 生成后调用 preview_url 工具在浏览器中预览
  • 所有依赖(Chart.js)通过 CDN 加载,无需本地安装

与 chat2duckdb 配合的标准流程

1. chat2duckdb 执行 SQL 查询 → 得到 DataFrame / 字典结果
2. chartjs-reporter 将结果转换为图表配置 JSON
3. 调用 generate_report.py 生成 HTML
4. 调用 preview_url 展示报告

参考资源

  • 核心脚本:scripts/generate_report.py
  • 图表配置参考:references/chart-config-guide.md
  • 样式主题参考:references/theme-tokens.md

注意事项

  • 报告为深色主题(dark mode),背景色 #0f172a,适合截图展示
  • 数值超过 1000 时,自动格式化为千分位(¥1,234,567)
  • 颜色序列已内置,无需手动指定每个数据点颜色
  • Chart.js 版本固定为 4.4.0(CDN),确保稳定性

相关专题

更多
js实现base64编码
js实现base64编码

在JavaScript中实现Base64编码,最直接的方式是使用内置的btoa()函数。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2025.10.24

379

9

html中如何调用外部js
html中如何调用外部js

在 html 中调用外部 js 可通过以下步骤:创建 js 文件并编写代码。在 html 代码中添加 <script> 标签,设置 src 属性为 js 文件路径。保存并刷新页面加载外部 js。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2024.04.11

1712

6

php和js的区别
php和js的区别

php和js的区别:PHP主要用于服务器端编程,而JavaScript主要用于客户端编程;PHP代码在服务器端执行,而JavaScript代码在客户端浏览器中执行。想了解更多php和js的相关内容,可以阅读本专题下面的文章。

2024.03.22

4828

11

JS的Document介绍
JS的Document介绍

在JavaScript中,document对象是一个非常重要的全局对象,它代表整个HTML文档。想了解更多Document的相关内容,可以阅读本专题下面的文章。

2024.03.14

6047

11

js中each函数的用法
js中each函数的用法

在JavaScript中,并没有一个内建的each函数,但jQuery库提供了一个非常有用的$.each() 函数,用于遍历数组或对象。想了解更多each函数的相关内容,可以阅读本专题下面的文章。

2024.03.13

1629

5

js和vue的关系
js和vue的关系

js和vue的关系:1、js作为web开发基石;2、vue.js作为前端框架的崛起;3、js与vue的互补关系;4、js与vue的实践应用。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2024.03.11

353

5

js弹幕功能实现方法
js弹幕功能实现方法

PHP中文网为大家带来,js实现弹幕功能的方法:1、创建html文件;2、添加html代码架构;3、在body标签中使用div、input、button标签分给页面设计效果显示框、输入框、弹幕提交按钮;4、添加script标签并写入js代码来实现弹幕效果;5、通过浏览器方式查看设计效果即可。希望对大家有所帮助。

2024.03.04

2992

11

js事件冒泡可以解决哪些问题
js事件冒泡可以解决哪些问题

js事件冒泡可以解决的问题:1、简化事件处理逻辑;2、提高事件处理性能;3、实现自定义组件和交互效果;4、控制事件传播方向;5、解决事件覆盖问题;6、实现全局事件监听;7、方便调试和排查问题。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2024.02.23

2824

4

js的split用法
js的split用法

js的split方法是字符串的一个方法,用于将字符串按照指定的分隔符分割成子字符串,并返回一个新的数组,其语法为“string.split(separator, limit)”。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2023.11.24

1127

5

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
WEB前端教程【HTML5+CSS3+JS】
WEB前端教程【HTML5+CSS3+JS】

共101课时 | 21万人学习

JS进阶与BootStrap学习
JS进阶与BootStrap学习

共39课时 | 4.8万人学习