API 参考
本页覆盖 pyantv 全部 44 个图表类型 + 核心方法 + 高级 API。完整章节列表见目录侧栏。
图表类
基础图表
| 类名 |
说明 |
示例 |
Line |
折线图 |
Line().set_data(data=[...]).set_encode(x_field_name="x", y_field_name="y") |
Interval |
柱状图 / 条形图 |
Interval().set_data(data=[...]).set_encode(x_field_name="x", y_field_name="y") |
Point |
散点图 |
Point().set_data(data=[...]).set_encode(x_field_name="x", y_field_name="y") |
Area |
面积图 |
Area().set_data(data=[...]).set_encode(x_field_name="x", y_field_name="y") |
Cell |
色块图 |
Cell().set_data(data=[...]).set_encode(x_field_name="x", y_field_name="y") |
Rect |
矩形图 |
Rect().set_data(data=[...]).set_encode(x_field_name="x", y_field_name="y") |
HeatMap |
热力图 |
HeatMap().set_data(data=[...]).set_encode(x_field_name="x", y_field_name="y") |
Box |
箱形图(基础标记) |
Box().set_data(data=[...]).set_encode(x_field_name="x", y_field_name="y") |
BoxPlot |
箱线图(统计) |
BoxPlot().set_data(data=[...]).set_encode(x_field_name="x", y_field_name="y") |
Arc |
弧形图 |
Arc().set_data(data=[...]).set_encode(x_field_name="x", y_field_name="y") |
Path |
路径图 |
Path().set_data(data=[...]).set_encode(x_field_name="x", y_field_name="y") |
Range |
范围图 |
Range().set_data(data=[...]).set_encode(x_field_name="x", y_field_name="y") |
Text |
文本标记 |
Text().set_data(data=[...]).set_encode(x_field_name="x", y_field_name="y") |
Image |
图片标记 |
Image().set_data(data=[...]).set_encode(x_field_name="x", src_field="src") |
Vector |
向量图 |
Vector().set_data(data=[...]).set_encode(x_field_name="x", y_field_name="y") |
Link |
链接图 |
Link().set_data(data=[...]).set_encode(x_field_name="x", y_field_name="y") |
Polygon |
多边形 |
Polygon().set_data(data=[...]).set_encode(x_field_name="x", y_field_name="y") |
Shape |
自定义形状 |
Shape().set_data(data=[...]).set_encode(x_field_name="x", y_field_name="y") |
Connector |
连接器 |
Connector().set_data(data=[...]).set_encode(x_field_name="x", y_field_name="y") |
Density |
密度图 |
Density().set_data(data=[...]).set_encode(x_field_name="x", y_field_name="y") |
Beeswarm |
蜂群图 |
Beeswarm().set_data(data=[...]).set_encode(x_field_name="x", y_field_name="y") |
Gauge |
仪表盘 |
Gauge().set_data(data=[...]).set_encode(x_field_name="x", y_field_name="y") |
Liquid |
水波图 |
Liquid().set_data(data=0.3) |
Wordcloud |
词云图 |
Wordcloud().set_data(data=[...]).set_encode(x_field_name="text", y_field_name="value") |
Sankey |
桑基图 |
Sankey().set_data(data={...}) |
TreeMap |
矩形树图 |
TreeMap().set_data(data={...}) |
ForceGraph |
力导向图 |
ForceGraph().set_data(data={...}) |
Pack |
打包图 |
Pack().set_data(data={...}) |
Tree |
树图 |
Tree().set_data(data={...}) |
Partition |
分区图 |
Partition().set_data(data={...}) |
Chord |
弦图 |
Chord().set_data(data={...}) |
GeoPath |
地理路径 |
GeoPath().set_data(data={...}) |
高级图表封装
在基础图表之上封装常用业务可视化模板,开箱即用。
| 类名 |
说明 |
示例 |
Funnel |
漏斗图 |
Funnel().set_data(data=[...]).set_encode(x_field_name="stage", y_field_name="value") |
WaterFall |
瀑布图 |
WaterFall().set_data(data=[...]).set_encode(x_field_name="category", y_field_name="value") |
Bullet |
子弹图 |
Bullet().set_data(data=[...]).set_encode(x_field_name="title", y_field_name="ranges") |
3D 图表
| 类名 |
说明 |
示例 |
Point3D |
3D 散点图 |
Point3D().set_data(data=[...]).set_encode(x_field_name="x", y_field_name="y", z_field_name="z") |
Line3D |
3D 折线图 |
Line3D().set_data(data=[...]).set_encode(x_field_name="x", y_field_name="y", z_field_name="z") |
Interval3D |
3D 柱状图 |
Interval3D().set_data(data=[...]).set_encode(x_field_name="x", y_field_name="y", z_field_name="z") |
组合图表
| 类名 |
说明 |
View |
视图容器,用于叠加多个图表 |
SpaceFlex |
弹性空间布局,水平/垂直排列子图 |
SpaceLayer |
图层叠加布局,多图层叠加 |
FacetRect |
矩形分面,按维度拆分为网格 |
FacetCircle |
圆形分面,按维度拆分为扇形 |
RepeatMatrix |
重复矩阵,多维度交叉展示 |
核心方法详解
set_data(data)
设置图表数据源。
| 参数 |
类型 |
说明 |
data |
list[dict] / dict / DataFrame / ndarray / float |
数据源 |
支持的数据类型:
# 字典列表(最常用)
chart.set_data(data=[{"x": 1, "y": 2}, {"x": 2, "y": 5}])
# pandas DataFrame
import pandas as pd
df = pd.DataFrame({"x": [1, 2], "y": [2, 5]})
chart.set_data(data=df)
# numpy ndarray
import numpy as np
arr = np.array([[1, 2], [2, 5]])
chart.set_data(data=arr)
# 标量值(如 Liquid 水波图)
chart.set_data(data=0.3)
# Fetch 远程数据
chart.set_data(data=opts.FetchDataOpts(value="https://example.com/data.json"))
set_encode(...)
设置视觉编码通道,将数据字段映射到视觉属性。
| 参数 |
类型 |
说明 |
x_field_name |
str / list[str] / JsCode |
X 轴字段 |
y_field_name |
str / list[str] / JsCode |
Y 轴字段 |
z_field_name |
str / list[str] / JsCode |
Z 轴字段(3D 图表) |
color_field |
str / list[str] / JsCode |
颜色通道字段 |
size_field |
str / JsCode |
大小通道字段 |
shape_field |
str / JsCode |
形状通道字段 |
series_field |
str / JsCode |
系列字段(分组) |
opacity_field |
str / JsCode |
透明度通道字段 |
ext_field |
dict |
扩展编码通道 |
chart.set_encode(
x_field_name="year",
y_field_name="value",
color_field="category",
size_field="weight",
)
set_style(style_opts)
设置图形样式。
| 参数 |
类型 |
说明 |
style_opts |
BaseChartStyleOpts / dict |
样式配置 |
chart.set_style(opts.BaseChartStyleOpts(fill="steelblue", opacity=0.8))
set_annotations(annotation_list)
设置图表标注(参考线、区域标注、文本标注)。
| 参数 |
类型 |
说明 |
annotation_list |
list[Annotation] |
标注配置列表 |
chart.set_annotations([
opts.LineAnnotationOpts(y=100, text="目标线"),
opts.RegionAnnotationOpts(x_start="Q2", x_end="Q3", fill="rgba(255,0,0,0.1)"),
opts.TextAnnotationOpts(x="Q4", y=200, text="峰值"),
])
设置数据变换。
| 参数 |
类型 |
说明 |
transform_opts |
Transform / list[Transform] |
变换配置 |
常用变换类型:GroupXOpts、StackYOpts、NormalizeYOpts、SortXOpts、SortYOpts、JitterOpts、SelectOpts
chart.set_transform(opts.StackYOpts())
chart.set_transform([opts.GroupXOpts(), opts.StackYOpts()])
set_coordinate(coordinate_opts)
设置坐标系。
| 参数 |
类型 |
说明 |
coordinate_opts |
Coordinate |
坐标系配置 |
坐标系类型:CoordinatePolarOpts(极坐标)、CoordinateCartesian3DOpts(3D 笛卡尔)、CoordinateHelixOpts(螺旋)
# 极坐标(饼图/环形图)
chart.set_coordinate(opts.CoordinatePolarOpts(inner_radius=0.5))
# 3D 笛卡尔坐标
chart.set_coordinate(opts.CoordinateCartesian3DOpts())
set_theme(theme)
设置图表主题。
| 参数 |
类型 |
说明 |
theme |
str / dict |
主题名称或自定义主题字典 |
内置主题:ThemeType.CLASSIC、ThemeType.DARK、ThemeType.ACADEMY
from pyantv.globals import ThemeType
chart.set_theme(ThemeType.DARK)
set_global_options(...)
一次性设置多个全局配置项。
| 参数 |
类型 |
说明 |
width |
int |
图表宽度 |
height |
int |
图表高度 |
is_auto_fit |
bool |
是否自适应容器 |
transform_opts |
Transform |
数据变换 |
coordinate_opts |
Coordinate |
坐标系 |
style_opts |
BaseChartStyle |
样式 |
animate_opts |
Animate |
动画 |
tooltip_opts |
Tooltip |
提示框 |
axis_opts |
Axis |
坐标轴 |
legend_opts |
Legend |
图例 |
label_opts |
Label |
标签 |
title_opts |
Title |
标题 |
chart.set_global_options(
width=800,
height=600,
is_auto_fit=True,
title_opts=opts.TitleOpts(title="销售趋势"),
tooltip_opts=opts.TooltipOpts(),
)
快捷构造(类方法)
Sprint 50+ 引入的一行式构造方法,自动推断编码字段,适合快速出图。
| 方法 |
签名 |
说明 |
Chart.from_data(data, x_field_name=None, y_field_name=None, color_field=None, size_field=None, shape_field=None, series_field=None) |
返回 Chart |
一行从数据构造图表,编码字段以具名参数方式传入 |
Chart.from_dataframe(dataframe, x_field_name=None, y_field_name=None, color_field=None, size_field=None, shape_field=None, series_field=None) |
返回 Chart |
从 pandas DataFrame 构造;NaN/NaT 自动转 None;需安装 pandas,否则抛 ImportError |
from pyantv import Line
chart = Line.from_data(
data=[{"year": "2020", "value": 3}, {"year": "2021", "value": 4}],
x_field_name="year", y_field_name="value",
)
快捷配置方法
简化常用全局配置,与 set_global_options(...) 等价但更直观。
| 方法 |
签名 |
说明 |
set_title(text=None, subtitle=None, align=None) |
(str|None, str|None, str|None) -> self |
设置标题 / 副标题 / 对齐方式 |
set_padding(top=None, right=None, bottom=None, left=None) |
全部 Optional[Numeric] |
设置画布四向内边距,仅传入非 None 的值生效 |
set_size(width=None, height=None, is_auto_fit=None) |
(Numeric|None, Numeric|None, bool|None) -> self |
设置宽高与自适应(参数名为 is_auto_fit) |
事件系统
Sprint 51 引入。绑定 G2 v5 原生事件,支持 90+ 个事件常量。
| 方法 |
签名 |
说明 |
set_events(events_dict) |
(dict[str, str|JsCode]) -> self |
批量绑定事件回调 |
from pyantv import Line
from pyantv.globals import ChartEvent # 也可从 pyantv 顶层直接导入
chart = (
Line.from_data(data=[...], x_field_name="x", y_field_name="y")
.set_events({
ChartEvent.ELEMENT_CLICK: "(ev) => { console.log('clicked:', ev.data); }",
ChartEvent.PLOT_POINTER_MOVE: "(ev) => { console.log('hover at', ev.x, ev.y); }",
})
)
完整事件常量见 pyantv.globals.ChartEvent(涵盖 element / plot / legend / axis / brush / tooltip 等 90+ 事件)。
渲染与导出
| 方法 |
参数 |
说明 |
render(path, compact=False) |
path: str = "render.html", compact: bool = False |
渲染为 HTML 文件,compact=True 可减少 ≥40% 体积 |
render_embed(compact=False) |
— |
渲染为 HTML 字符串 |
render_notebook() |
— |
在 Jupyter Notebook 中显式渲染(推荐直接放置图表对象,依赖 _repr_html_) |
_repr_html_() |
— |
Jupyter / IPython 自动调用,cell 末位置图表对象即可内联渲染 |
save_as_image(path, width=1200, height=800) |
path: str |
导出为 PNG 图片(Playwright) |
save_as_svg(path, width=1200, height=800) |
path: str |
导出为 SVG 矢量图(Playwright) |
dump_options(compact=False) |
compact: bool |
序列化图表配置为 JSON 字符串,compact=True 时无缩进无空格 |
插件方法
| 方法 |
参数 |
说明 |
use_renderer(type) |
renderer_type: str(canvas/svg/webgl) |
切换渲染器 |
use_rough(roughness, bowing) |
roughness: float = 1.0, bowing: float = 1.0 |
启用手绘风格 |
use_lottie(autoplay) |
autoplay: bool = True |
启用 Lottie 动画 |
标注选项类
| 类名 |
说明 |
关键参数 |
LineAnnotationOpts |
参考线 |
x/y(位置)、text(标签)、style(样式) |
RegionAnnotationOpts |
区域标注 |
x_start/x_end/y_start/y_end(范围)、fill(填充色) |
TextAnnotationOpts |
文本标注 |
x/y(位置)、text(内容)、style(样式) |
Notebook 集成
Sprint 73 深度集成。详见 Notebook 使用指南。
| 函数 / 方法 |
模块 |
说明 |
notebook_config(width, height, theme) |
pyantv.render.notebook |
全局配置 notebook 渲染参数(width / height / theme) |
Chart._repr_html_() |
pyantv.charts.base |
IPython 自动调用,cell 末放置图表即可内联显示 |
from pyantv import Line
from pyantv.render.notebook import notebook_config
notebook_config(width="80%", height="400px", theme="dark")
chart = Line.from_data(data=[{"x": 1, "y": 2}], x_field_name="x", y_field_name="y")
chart # cell 末,自动 inline 渲染
Preset 系统
Sprint 47-50 引入,31 个预设函数,详见 Presets 总览。
| 分类 |
代表函数 |
| 主题 |
with_dark_theme / with_classic_theme / with_academy_theme / with_tech_theme / with_business_theme / with_fresh_theme |
| 动画 |
with_smooth_animation |
| 布局 |
with_auto_fit / with_legend_hidden / with_axis_hidden / with_labels / with_padding |
| 坐标系 |
with_transpose / with_polar |
| 交互 |
with_tooltip / with_element_highlight / with_element_select / with_brush_highlight / with_brush_filter / with_fisheye / with_slider_filter |
| 数据转换 |
with_sort_by / with_stack / with_normalize / with_group / with_jitter |
| 格式化 |
format_number / format_percent / format_currency / format_date |
| 批量工具 |
batch_export_png |
离线资源(pyantv.offline)
Sprint 63 引入,用于在内网 / 离线环境下使用 pyantv。
| 函数 / 类 |
说明 |
install_assets(target_dir=None, libs=None, version_map=None, use_cache=True) |
一键下载 AntV 前端资源到本地(默认目录 ~/.pyantv/assets),返回 {lib_name: local_path} |
set_offline_host(host) |
设置离线 host,优先于在线 CDN(支持 file:// 协议) |
get_active_host() |
获取当前生效的 host(优先级:OFFLINE_HOST > 环境变量 PYANTV_OFFLINE_HOST > ONLINE_HOST) |
AssetRegistry |
资源注册表(类方法 register / get / list_registered / unregister),默认注册 G2 5.2.11 |
OfflineInstallError |
下载失败时抛出的异常类型 |
大数据降采样(pyantv.commons.utils)
Sprint 64 引入,支持百万级数据点的高性能渲染。
| 函数 / 方法 |
说明 |
downsample(data, max_points, method="lttb", x_field=None, y_field=None, random_state=None) |
降采样到 max_points:lttb(默认,保留形状特征)/ uniform(时序稳定)/ random(支持 random_state 重现),位于 pyantv.data.pipeline |
Chart.set_data(data, sample_if_large=None, sample_method="lttb", sample_x_field=None, sample_y_field=None) |
set_data 内置降采样开关,当 sample_if_large 为 int 且数据点数超过该阈值时自动调用 downsample 并发出 UserWarning(默认 None 不采样) |
Web 集成
| 函数 |
模块 |
说明 |
make_response(chart) |
pyantv.web |
生成 Flask Response |
render_chart_to_html(chart) |
pyantv.web |
生成 HTML 字符串 |
st_pyantv(chart, height, width) |
pyantv.web |
Streamlit 组件 |