如何在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
相关产品推荐
相关产品推荐

