Now liveThe Skillselion MCP - thousands of ranked skills, loaded into your agent mid-task. No install.Get it →
antvis avatar

Chart Visualization

  • 28 installs
  • 762 repo stars
  • Updated June 26, 2026
  • antvis/gpt-vis

chart-visualization is a Claude Code skill that recommends a chart type and generates GPT-Vis syntax, JSON config, or runnable code to visualize data.

About

This skill recommends and generates data-visualization charts using the GPT-Vis library. It picks a chart type from the user's intent and data across 26 chart types, then produces either a syntax/JSON config for GPTVis.render() or complete runnable code. Developers use it to add LLM-generated charts to an app, either as streamed configs or as a ready-to-run HTML/JS snippet.

  • Recommends a chart type from user intent and data across 26 supported chart types
  • Two output modes: syntax/JSON config for GPTVis.render(), or full runnable code
  • Documents the GPTVis API, Syntax DSL, and NPM/CDN install

Chart Visualization by the numbers

  • 28 all-time installs (skills.sh)
  • Ranked #980 of 1,335 Generative Media skills by installs in the Skillselion catalog
  • Data as of Aug 5, 2026 (Skillselion catalog sync)
At a glance

chart-visualization capabilities & compatibility

Capabilities
data analysis · chart generation · ui design
Use cases
data analysis · frontend
Pricing
Free
From the docs

What chart-visualization says it does

支持两种输出模式:(1)语法模式——生成 Syntax 或 JSON 配置;(2)代码模式——生成完整的运行代码。
SKILL.md
npm install @antv/gpt-vis
SKILL.md
npx skills add https://github.com/antvis/gpt-vis --skill chart-visualization

Add your badge

Show developers this skill is listed on Skillselion. Paste this into your README.

Listed on Skillselion
Installs28
repo stars762
Last updatedJune 26, 2026
Repositoryantvis/gpt-vis

What it does

Recommend a chart type and generate GPT-Vis syntax, JSON config, or runnable code to visualize the user's data.

Who is it for?

Turning data and intent into a chart config or runnable GPT-Vis rendering code

When should I use this skill?

Asked to recommend or generate a data-visualization chart with GPT-Vis

What you get

A chart type is chosen and rendered as GPT-Vis syntax, JSON, or complete runnable code.

  • A chart-type recommendation
  • GPT-Vis syntax or JSON config, or complete runnable code

By the numbers

  • supports 26 chart types

Files

SKILL.mdMarkdownGitHub ↗

图表可视化技能

步骤

1. 意图识别:根据用户意图和数据特征选择图表类型 2. 确定输出模式:根据上下文选择语法模式或代码模式 3. 生成输出:按所选模式生成内容

支持的图表类型

type 值适用场景
line时间序列趋势
area时间序列趋势+总量
column分类数据对比
bar分类对比(标签长)
pie部分占整体比例
scatter两变量关系
dual-axes不同量级数据对比
histogram连续数值频次分布
boxplot数据分布与异常值
violin数据分布密度
radar多维度对比
funnel流程转化率
waterfall累计增减变化
liquid百分比/进度
word-cloud词频展示
venn集合交并关系
treemap层级数据占比
sankey流量流向
flow-diagram流程步骤
mindmap层级知识梳理
indented-tree树节点层级/目录
network-graph实体间关联关系
organization-chart组织层级
fishbone-diagram根因分析
table表格数据展示
summary内容总结

输出模式

模式一:语法模式(Syntax / JSON)

用于 LLM 应用集成场景,生成图表配置供 GPTVis.render() 消费。支持两种格式:

  • Syntax 格式:类 Markdown 缩进语法,适合流式输出(LLM 逐 token 生成时可实时渲染)
  • JSON 格式:标准 JSON 对象,适合结构化 API 调用

两种格式等价,GPTVis.render() 均可直接接受。

模式二:代码模式

用于用户需要可直接运行的完整代码场景。生成包含安装说明和完整代码的输出。

GPTVis API

GPTVis 是库的统一入口类,负责创建、渲染和销毁图表。

构造函数

new GPTVis(options: VisualizationOptions)

VisualizationOptions:

参数类型必填默认值说明
container`string \HTMLElement`
widthnumber图表宽度(px)
heightnumber图表高度(px)
theme`'default' \'light' \'dark' \'academy'`
wrapperbooleanfalse是否显示外层 UI 容器(含标签页、下载、复制等)
localestring'zh-CN'wrapper 内文案语言

方法

render(config: string | object): void

渲染图表。接受两种输入:

  • Syntax 字符串:以 vis [type] 开头的文本,自动解析为配置对象
  • JSON 配置对象:包含 type 字段的对象
  • 纯文本:不以 vis 开头的字符串会被当作 summary 类型渲染

多次调用 render() 会自动销毁前一个图表再渲染新图表。

destroy(): void

销毁当前图表实例,释放资源。

语法模式:JSON 格式

直接输出符合图表 TypeScript 类型的 JSON 对象,GPTVis.render() 可直接消费。

JSON 示例

{
  "type": "column",
  "data": [
    { "category": "A产品", "value": 30, "group": "线上" },
    { "category": "B产品", "value": 50, "group": "线上" }
  ],
  "title": "产品销量对比",
  "axisXTitle": "产品",
  "axisYTitle": "销量(万)",
  "stack": true,
  "theme": "academy",
  "style": {
    "palette": ["#5B8FF9", "#61DDAA"]
  }
}

语法模式:Syntax 格式

类 Markdown 缩进语法,支持流式渲染。第一行必须是 vis [type]

语法规则

基本属性key value,每行一个:

title 年度趋势
theme dark

对象数组data 下每项用 - 开头,子字段缩进:

{ data: { time: string; value: number; }[]; }

对应:

data
  - time 2020
    value 100
  - time 2021
    value 120

纯值数组 — 每项用 - 开头:

{ data: number[] }

对应:

data
  - 10
  - 20

含空格的字符串值 — 用引号(单引号或双引号)包裹;不含空格时可省略引号:

categories
  - "North America"
  - '东南 亚'
  - 欧洲

嵌套对象 — 对象名占一行,子属性缩进:

{ style?: { backgroundColor?: string; palette?: string[] } }

对应:

style
  backgroundColor #f0f2f5
  palette
    - #5B8FF9
    - #61DDAA

递归树形children 数组用 - 缩进:

type TreeData = { name: string; children?: TreeData[] };
{ data: TreeData; }

对应:

data
  name 根节点
  children
    - name 子节点A
      children
        - name 孙节点
    - name 子节点B

Syntax 完整示例

vis column
data
  - category A产品
    value 30
    group 线上
  - category B产品
    value 50
    group 线上
title 产品销量对比
axisXTitle 产品
axisYTitle 销量(万)
stack true
theme academy
style
  palette
    - #5B8FF9
    - #61DDAA

Markdown 语法

当输出为 Markdown 格式时,使用 GPT-Vis 作为 fenced code block 的语言标记,内容区写入完整的 Syntax 格式

````markdown

vis line
data
  - time 2020
    value 100

````

格式:

````

<完整的 Syntax 内容,首行 vis <chart-type>>

````

语法规则:

  • 语言标记固定为 GPT-Vis
  • 内容区使用 Syntax 格式规则编写,首行必须包含 `vis <chart-type>`(完整列表见上方支持的图表类型
  • 代码块会被 Markdown 插件转换为 <code classname='language-gpt-vis'>,由浏览器端渲染
注意:Markdown 模式下,内容区必须写首行 vis <type>,与纯 Syntax 模式格式一致。

代码模式

根据目标框架生成完整可运行代码。

安装方式

NPM:

npm install @antv/gpt-vis
import { GPTVis } from '@antv/gpt-vis';

CDN:

<script src="https://unpkg.com/@antv/gpt-vis/dist/umd/index.min.js"></script>

CDN 引入后通过 GPTVis.GPTVis 访问主类。

HTML 完整示例

<html>
  <head>
    <script src="https://unpkg.com/@antv/gpt-vis/dist/umd/index.min.js"></script>
  </head>
  <body>
    <div id="container"></div>
    <script>
      const gptVis = new GPTVis.GPTVis({
        container: '#container',
        width: 600,
        height: 400,
      });

      gptVis.render(`
vis line
data
  - time 2020
    value 100
  - time 2021
    value 120
title 年度趋势
`);
    </script>
  </body>
</html>

图表类型配置

通用配置

所有图表均包含以下字段,后续各图表类型定义中省略这些字段。各小节标题即为 type 值(如 linecolumn),对应上方图表类型表中的 type 列。

{ type: string; title?: string; theme?: 'default' | 'light' | 'dark' | 'academy'; style?: { backgroundColor?: string; palette?: string[] } }

line / area

{ data: { time: string | number; value: number; group?: string }[]; axisXTitle?: string; axisYTitle?: string; stack?: boolean; style?: { lineWidth?: number } }

stack 仅 area 支持。

column / bar

{ data: { category: string; value: number; group?: string }[]; axisXTitle?: string; axisYTitle?: string; stack?: boolean; group?: boolean }

pie

value 不可使用百分比数字。

{ data: { category: string; value: number }[]; innerRadius?: number }

innerRadius 设为 0.6 变为环图。

scatter

{ data: { x: number; y: number; group?: string }[]; axisXTitle?: string; axisYTitle?: string }

dual-axes

{ categories: string[]; series: { type: 'line' | 'column'; data: number[]; axisYTitle?: string }[]; axisXTitle?: string; style?: { startAtZero?: boolean } }

histogram

{ data: number[]; binNumber?: number; axisXTitle?: string; axisYTitle?: string }

boxplot / violin

同一 category 需多条数据以展示分布。

{ data: { category: string; value: number; group?: string }[]; axisXTitle?: string; axisYTitle?: string; style?: { startAtZero?: boolean } }

radar

{ data: { name: string; value: number; group?: string }[]; align?: boolean }

align: 是否对齐各维度比例尺,默认 false(各轴独立缩放);true 时所有轴共享同一最大值,适合多系列绝对数值对比。

funnel

{ data: { category: string; value: number; }[]; }

waterfall

value 可为负数表示减少。palette 为色板数组,顺序为 [正值色, 负值色, 汇总色]。

{ data: { category: string; value: number }[]; axisXTitle?: string; axisYTitle?: string; style?: { palette?: string[] } }

liquid

percent 范围 0~1。

{ percent: number; shape?: 'rect' | 'circle' | 'pin' | 'triangle' }

word-cloud

{ data: { text: string; value: number; }[]; }

venn

交集用逗号分隔集合标识:sets: "A,B"label 用于显示图表上对应集合的名称

{ data: { sets: string | string[]; value: number; label?: string }[] }

treemap

type TreeNode = { name: string; value: number; children?: TreeNode[] };
{ data: TreeNode[] }

sankey

{ data: { source: string; target: string; value: number }[]; nodeAlign?: 'left' | 'center' | 'right' | 'justify' }

flow-diagram / network-graph

source/target 引用节点的 name

type GraphData = { nodes: { name: string }[]; edges: { source: string; target: string; name?: string }[] };

// flow-diagram
{ data: GraphData }

// network-graph
{ data: GraphData; layout?: 'force' | 'circular' | 'grid' | 'radial' | 'concentric' | 'dagre' }

mindmap / indented-tree / organization-chart

type TreeData = { name: string; children?: TreeData[] };

// mindmap
{ data: TreeData; direction?: 'H' | 'LR' | 'RL' }

// indented-tree
{ data: TreeData; direction?: 'LR' | 'RL' | 'H' }

// organization-chart
type OrganizationChartData = {
  name: string;
  description?: string;
  children?: OrganizationChartData[];
};

{ data: OrganizationChartData }

mindmap 默认 'H',indented-tree 默认 'LR'

fishbone-diagram

type FishboneNode = { name: string; children?: FishboneNode[] };
{ data: FishboneNode; style?: { texture?: 'rough' | 'default' } }

texture: 'rough' 为手绘风格。

table

{ data: Record<string, string | number>[]; }

summary

summary 与其他图表类型完全不同:不使用 Syntax/JSON 配置,而是使用 T8 语法(Markdown + 语义标注)。

⚠️ 生成 summary 前必须:先读取 references/summary.md 获取 T8 语法规则、完整实体类型列表、属性字段定义、生成要求和示例,然后再生成内容。跳过此步骤将导致语法错误。

最佳实践

1. 饼图分类不超过 5 个,超过建议合并为"其它"或改用条形图 2. 不要用饼图展示趋势,不要用折线图展示无序分类 3. 数值字段必须是数字类型,分类字段必须是文本类型 4. 连续数值的分布(如薪资、成绩、年龄)必须用直方图(histogram) 5. 多维数据字段映射:有两个分类维度时,x 轴维度写 time/category,另一个写 group 6. 语法模式优先用 Syntax 格式(流式友好) 7. 代码模式默认生成 HTML + CDN 方案(零安装),用户指定框架时再用 npm 方案

Related skills

FAQ

How many chart types are supported?

26, including line, area, column, bar, pie, scatter, radar, sankey, treemap, and mindmap.

What output modes does it have?

Syntax/JSON config for GPTVis.render(), or full runnable code with NPM or CDN install instructions.

This week in AI coding

Five minutes, every Monday - the tools, releases and tactics for developers.

unsubscribe anytime.