Plotly绘制柱状图时如何正确显示带小数位的百分比数值
问题原因
Plotly 底层使用 d3-format 规则解析格式字符串,单独配置yaxis_tickformat = '%'时,默认等价于.0%,即百分比保留0位小数,因此0.99944这类接近1的数值会被直接四舍五入为100%,丢失小数精度。
解决方案
需要同时配置Y轴刻度和悬浮提示的数值格式,明确指定百分比保留的小数位数即可:
- 配置Y轴刻度格式:将原有
%替换为.n%格式,其中n为需要保留的小数位数,针对你的数据设置为.3%即可满足3位小数的展示需求;如果需要自动省略末尾无意义的0(比如99.9%不显示为99.900%),可使用.3~%格式。 - 同步配置Y轴悬浮提示格式:添加
hoverformat参数和刻度格式保持一致,避免悬浮提示仍使用默认整数百分比格式。 - 可选优化:由于所有可用率数值均高于99.9%,可手动指定Y轴取值范围,放大数值之间的差异,避免所有柱子高度几乎齐平无法直观对比。
修改后可直接运行的代码
cf.go_offline() fig = df_uptime_percentage.iplot(kind='bar', yTitle='Percent Uptime', xTitle='API Endpoint', asFigure = True) fig.update_layout( yaxis = dict( tickformat = '.3%', # Y轴刻度保留3位小数百分比 hoverformat = '.3%', # 悬浮提示数值保留3位小数百分比 range = [0.999, 1.0001] # 可选:调整Y轴范围,放大数值差异 ), hovermode="x unified" ) fig.iplot()
效果说明
修改后所有数值会按指定精度展示:
- API 1对应的0.9994400 正确显示为99.944%
- API 2对应的0.999914 正确显示为99.991%
- 其余接口数值均不会被过度四舍五入为100%
内容的提问来源于stack exchange,提问作者OfSorts
相关产品推荐
相关产品推荐

