You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Plotly的go.Indicator中设置数字显示为两位小数?

解决Plotly go.Indicator数字格式问题

问题分析

你当前的代码把valueformat放在了delta字典里,这只会格式化当前值与reference的差值,而非你要处理的原始数值(0.999717)。另外,若你需要的是截断两位小数得到0.99,而非四舍五入得到1.00,仅靠格式化参数无法实现,得先对数值做预处理。

解决方案

场景1:格式化原始数值为两位小数(四舍五入)

将valueformat移至go.Indicator的根参数中,直接作用于原始value:

fig.add_trace(
    go.Indicator(
        mode = "delta",  # 若需同时显示数值和delta变化量,改为"number+delta"
        value = df[df.columns[2]].values[-1],
        domain = {'row': 1, 'column': 1},
        valueformat = ".2f",  # 设置原始数值的显示格式
        delta = {
            "reference": df[df.columns[2]].values[-13], 
            "suffix": "%"
            # 若需单独格式化差值,可在此添加"valueformat": ".2f"
        },
    ),
    row = 2,
    col = 1
)

场景2:截断原始数值至两位小数(得到0.99而非1.00)

Plotly的valueformat默认是四舍五入逻辑,若要强制截断,需先处理数值再传入:

# 获取原始数值并截断到两位小数
current_value = df[df.columns[2]].values[-1]
truncated_value = int(current_value * 100) / 100  # 或用math.floor(current_value * 100) / 100

fig.add_trace(
    go.Indicator(
        mode = "delta",
        value = truncated_value,
        domain = {'row': 1, 'column': 1},
        valueformat = ".2f",
        delta = {
            "reference": df[df.columns[2]].values[-13], 
            "suffix": "%"
        },
    ),
    row = 2,
    col = 1
)

关键说明

  • .2f是标准的两位小数格式化语法,之前显示更长数字是因为你格式化的是差值而非目标原始数值。
  • 若将mode设为"number+delta",valueformat会控制左侧显示的数值部分,delta的格式可单独在delta字典中配置。

内容的提问来源于stack exchange,提问作者ShanN

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.23 02:22:47