使用 ggSQL 语法扩展从表格数据生成图表。适用于:在没有 Python/R 的情况下可视化数据为图表。支持:散点图...
ggsql 可视化 Skill. 使用 ggsql SQL 语法从表格数据中生成图表. .是一项面向实际任务的技能,主要用于Overview.ggsql 扩展 SQL , 以图形语法为基础实现可视化能力.;Write familiar SQ.。
从功能定位来看,该技能强调把分散的操作要求整理成清晰、可复用的处理流程,使用户能够围绕既定目标快速准备输入、选择执行方式并获得结构化结果。实际使用前应先确认任务范围、数据来源、运行环境、必要权限和关键参数,再依据技能说明逐步执行;
若输入条件不完整,应先补齐信息或采用保守配置,避免因错误假设导致结果偏离需求。执行过程中需要关注工具调用是否成功、接口或依赖是否可用、输出格式是否符合预期,并对异常提示、缺失字段和边界情况进行处理;涉及批量任务时,还应保存进度,避免中断后重复操作。
使用 ggsql SQL 语法,从表格数据生成图表。
ggsql 基于“图形语法”(Grammar of Graphics)为 SQL 扩展了可视化能力。您只需编写熟悉的 SQL 查询,并添加可视化子句,即可直接生成图表——无需 Python 或 R 环境。
✅ 请在以下情况下使用该技能:
❌ 请勿在以下情况下使用该技能:
data:
chart_type: point | line | bar | histogram | boxplot | violin | density | heatmap | pie
mapping:
x: <列名> # 大多数图表必需
y: <列名> # 散点图、折线图、柱状图、箱线图必需
fill: <列名> # 可选,用于颜色填充编码
color: <列名> # 可选,用于描边颜色
shape: <列名> # 可选,用于散点形状
size: <列名> # 可选,用于散点大小
options:
title: <图表标题> # 可选
subtitle: <图表副标题> # 可选
x_label: # 可选
y_label: # 可选
binwidth: <数值> # 直方图专用
facet: <列名> # 一维分面(small multiples)
facet_by: <列名> # 二维分面
scale_x: continuous | discrete | binned | log10
scale_y: continuous | discrete | binned | log10
scale_fill: continuous | discrete | binned
point)必需映射项:x、y
可选映射项:fill、color、shape、size
VISUALISE {x} AS x, {y} AS y, {fill} AS fill
FROM {data_source}
DRAW point
LABEL title => '{title}', x => '{x_label}', y => '{y_label}'
line)必需映射项:x、y
可选映射项:color、linetype
VISUALISE {x} AS x, {y} AS y, {color} AS color
FROM {data_source}
DRAW line
LABEL title => '{title}', x => '{x_label}', y => '{y_label}'
bar)必需映射项:x、y(或仅提供 x,自动计数)
可选映射项:fill
SELECT {x}, COUNT(*) as count FROM {data_source}
GROUP BY {x}
VISUALISE {x} AS x, count AS y, {fill} AS fill
DRAW bar
LABEL title => '{title}', x => '{x_label}', y => '{y_label}'
histogram)必需映射项:x
可选映射项:fill、binwidth
VISUALISE {x} AS x, {fill} AS fill
FROM {data_source}
DRAW histogram
SETTING binwidth => {binwidth}
LABEL title => '{title}', x => '{x_label}'
boxplot)必需映射项:x(分类变量)、y(数值变量)
可选映射项:fill
VISUALISE {x} AS x, {y} AS y, {fill} AS fill
FROM {data_source}
DRAW boxplot
LABEL title => '{title}', x => '{x_label}', y => '{y_label}'
tile)必需映射项:x、y、fill
可选映射项:无
VISUALISE {x} AS x, {y} AS y, {fill} AS fill
FROM {data_source}
DRAW tile
SCALE BINNED fill
LABEL title => '{title}', x => '{x_label}', y => '{y_label}'
density)必需映射项:x
可选映射项:fill
VISUALISE {x} AS x, {fill} AS fill
FROM {data_source}
DRAW density
LABEL title => '{title}', x => '{x_label}'
violin)必需映射项:x(分类变量)、y(数值变量)
可选映射项:fill
VISUALISE {x} AS x, {y} AS y, {fill} AS fill
FROM {data_source}
DRAW violin
LABEL title => '{title}', x => '{x_label}', y => '{y_label}'
pie,使用极坐标投影)必需映射项:fill
可选映射项:无
SELECT {fill}, COUNT(*) as count FROM {data_source}
GROUP BY {fill}
VISUALISE {fill} AS fill, count AS y
DRAW bar
PROJECT polar
LABEL title => '{title}'
| 标度 | 适用场景 | 示例 |
|---|---|---|
CONTINUOUS |
数值型变量 | SCALE CONTINUOUS x FROM [0, null] |
DISCRETE |
分类变量 | SCALE DISCRETE fill TO ['red', 'blue'] |
BINNED |
对连续变量进行分箱 | SCALE BINNED fill |
ORDINAL |
有序分类变量 | SCALE ORDINAL x |
IDENTITY |
直接使用原始值(如 RGB 字符串、十六进制色值) | SCALE IDENTITY color |
log10 |
以 10 为底的对数变换 | SCALE CONTINUOUS y VIA log10 |
VISUALISE {x} AS x, {y} AS y
FROM {data_source}
DRAW point
FACET {facet_column}
VISUALISE {x} AS x, {y} AS y
FROM {data_source}
DRAW point
FACET {facet_column} BY {facet_by_column}
组合多个 DRAW 子句:
VISUALISE {x} AS x, {y} AS y
FROM {data_source}
DRAW line
MAPPING {group} AS color
DRAW point
MAPPING {group} AS fill
LABEL title => '{title}'
ggsql:penguins、ggsql:airquality# 安装
cargo install ggsql-cli
# 运行
ggsql-cli run -f input.sql -o output.svg
uv tool install ggsql-jupyter
ggsql-jupyter --install
输入:
data: penguins.csv
chart_type: point
mapping:
x: bill_length_mm
y: bill_depth_mm
fill: species
options:
title: Penguin Bill Dimensions
x_label: Bill Length (mm)
y_label: Bill Depth (mm)
生成的 SQL:
SELECT * FROM 'penguins.csv'
VISUALISE bill_length_mm AS x, bill_depth_mm AS y, species AS fill
DRAW point
LABEL
title => 'Penguin Bill Dimensions',
x => 'Bill Length (mm)',
y => 'Bill Depth (mm)'
输入:
data: sales.csv
chart_type: histogram
mapping:
x: revenue
options:
title: Revenue Distribution
binwidth: 1000
生成的 SQL:
SELECT * FROM 'sales.csv'
VISUALISE revenue AS x
DRAW histogram
SETTING binwidth => 1000
LABEL title => 'Revenue Distribution'
输入:
data: penguins.csv
chart_type: point
mapping:
x: bill_length_mm
y: bill_depth_mm
fill: species
options:
title: Penguins by Island
facet: island
生成的 SQL:
SELECT * FROM 'penguins.csv'
VISUALISE bill_length_mm AS x, bill_depth_mm AS y, species AS fill
DRAW point
FACET island
LABEL title => 'Penguins by Island'
输入:
data: sales.csv
chart_type: multi
mapping:
x: date
y: revenue
group: region
options:
title: Revenue Trend by Region
生成的 SQL:
SELECT * FROM 'sales.csv'
VISUALISE date AS x, revenue AS y
DRAW line
MAPPING region AS color
DRAW point
MAPPING region AS fill
LABEL title => 'Revenue Trend by Region'
接收到 YAML 输入后,按如下流程生成 SQL:
chart_type 以选择对应模板mapping 构建 VISUALISE 子句DRAW 子句SCALE、FACET、LABEL 等可选子句data 为 CSV 路径,则使用 FROM 'path/to/file.csv'data 为 SQL 表引用,则使用 FROM table_name相关专题
热门下载
相关下载
精品课程
共1课时 | 140人学习
共0课时 | 0人学习
共1课时 | 192人学习
最新文章