格式化 Presets¶
格式化 Presets 生成格式化函数,用于在标签(label)和提示框(tooltip)中格式化数据显示。
format_number¶
生成数值格式化 JsCode,支持千分位分隔符和小数位数控制。
函数签名:
def format_number(separator=",", precision=0)
参数:
- separator (str, 可选): 千分位分隔符,默认 ","
- precision (int, 可选): 小数位数,默认 0
返回: JsCode 对象,可用于 LabelOpts 或 tooltip_opts 的 formatter
示例:
from pyantv import Interval
from pyantv.presets import format_number
from pyantv import options as opts
chart = Interval.from_data(data=data, x_field_name="category", y_field_name="value")
# 整数格式化(千分位)
chart.set_labels(label_opts=opts.LabelOpts(
formatter=format_number(precision=0)
))
# 保留两位小数
chart.set_labels(label_opts=opts.LabelOpts(
formatter=format_number(precision=2)
))
chart.render("formatted_number.html")
效果:
- 1234.567 → 1,234.57(precision=2)
- 1234567 → 1,234,567(precision=0)
format_percent¶
生成百分比格式化 JsCode,将数值转换为百分比形式。
函数签名:
def format_percent(precision=1)
参数:
- precision (int, 可选): 小数位数,默认 1
返回: JsCode 对象
示例:
from pyantv import Interval
from pyantv.presets import format_percent
from pyantv import options as opts
chart = Interval.from_data(data=data, x_field_name="category", y_field_name="value")
# 保留一位小数
chart.set_labels(label_opts=opts.LabelOpts(
formatter=format_percent(precision=1)
))
# 保留两位小数
chart.set_labels(label_opts=opts.LabelOpts(
formatter=format_percent(precision=2)
))
chart.render("formatted_percent.html")
效果:
- 0.1234 → 12.3%(precision=1)
- 0.5678 → 56.78%(precision=2)
format_currency¶
生成货币格式化 JsCode,支持自定义货币符号和小数位数。
函数签名:
def format_currency(symbol="$", precision=2)
参数:
- symbol (str, 可选): 货币符号,默认 "$"
- precision (int, 可选): 小数位数,默认 2
返回: JsCode 对象
示例:
from pyantv import Interval
from pyantv.presets import format_currency
from pyantv import options as opts
chart = Interval.from_data(data=data, x_field_name="category", y_field_name="value")
# 美元格式
chart.set_labels(label_opts=opts.LabelOpts(
formatter=format_currency(symbol="$", precision=2)
))
# 人民币格式
chart.set_labels(label_opts=opts.LabelOpts(
formatter=format_currency(symbol="¥", precision=2)
))
# 欧元格式
chart.set_labels(label_opts=opts.LabelOpts(
formatter=format_currency(symbol="€", precision=2)
))
chart.render("formatted_currency.html")
效果:
- 1234.567 → $1,234.57(symbol="$")
- 1234.567 → ¥1,234.57(symbol="¥")
format_date¶
生成日期格式化 JsCode,支持自定义日期格式模式。
函数签名:
def format_date(pattern="YYYY-MM-DD")
参数:
- pattern (str, 可选): 日期格式模式,默认 "YYYY-MM-DD"
返回: JsCode 对象
支持的占位符:
- YYYY - 四位年份
- MM - 两位月份(01-12)
- DD - 两位日期(01-31)
- HH - 两位小时(00-23)
- mm - 两位分钟(00-59)
- ss - 两位秒数(00-59)
示例:
from pyantv import Line
from pyantv.presets import format_date
from pyantv import options as opts
chart = Line.from_data(data=data, x_field_name="date", y_field_name="value")
# 默认格式:YYYY-MM-DD
chart.set_labels(label_opts=opts.LabelOpts(
formatter=format_date()
))
# 自定义格式:YYYY/MM/DD
chart.set_labels(label_opts=opts.LabelOpts(
formatter=format_date("YYYY/MM/DD")
))
# 带时间的格式:YYYY-MM-DD HH:mm
chart.set_labels(label_opts=opts.LabelOpts(
formatter=format_date("YYYY-MM-DD HH:mm")
))
chart.render("formatted_date.html")
效果:
- 2023-04-23T14:30:00Z → 2023-04-23(pattern="YYYY-MM-DD")
- 2023-04-23T14:30:00Z → 2023/04/23(pattern="YYYY/MM/DD")
- 2023-04-23T14:30:00Z → 2023-04-23 14:30(pattern="YYYY-MM-DD HH:mm")
在 Tooltip 中使用¶
格式化函数也可以用于 tooltip:
from pyantv import Line
from pyantv.presets import format_number, format_date
from pyantv import options as opts
chart = Line.from_data(data=data, x_field_name="date", y_field_name="value")
# 在 tooltip 中使用格式化
tooltip_config = {
"shared": True,
"fields": {
"value": {
"formatter": format_number(precision=2)
},
"date": {
"formatter": format_date("YYYY-MM-DD")
}
}
}
chart.set_tooltip(tooltip_opts=tooltip_config)
chart.render("tooltip_formatted.html")
格式化对比¶
| Preset | 数据类型 | 主要用途 | 常用场景 |
|---|---|---|---|
format_number |
数值 | 千分位、小数位数 | 金额、数量、指标 |
format_percent |
数值 | 百分比转换 | 占比、增长率 |
format_currency |
数值 | 货币符号+千分位 | 金额显示 |
format_date |
日期 | 日期格式化 | 时间轴、日期标签 |