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

Python Dash Gauge如何使用字符串代替数值作为取值?

实现方案

dash_daq.Gauge 本身原生不支持直接传入字符串作为取值,你可以通过自定义刻度+回调动态更新标签的组合方式实现需求,改造后的可运行代码如下:

import dash
from dash import Input, Output, html
import dash_daq as daq

app = dash.Dash(__name__)

# 定义区间和对应分段名称的映射,可根据自己的需求修改
RANGE_MAP = [
    {"name": "低风险", "color": "green", "range": [0, 6]},
    {"name": "中风险", "color": "yellow", "range": [6, 8]},
    {"name": "高风险", "color": "red", "range": [8, 10]}
]

app.layout = html.Div([
    daq.Gauge(
        id="custom-gauge",
        color={
            "gradient": True,
            "ranges": {item["color"]: item["range"] for item in RANGE_MAP}
        },
        value=2,
        label='低风险',
        max=10,
        min=0,
        # 自定义刻度标签,把数值点位替换为你需要的字符串
        scale={
            "start": 0,
            "interval": 2,
            "labelInterval": 1,
            "custom": {
                0: "极差",
                2: "差",
                4: "一般",
                6: "良",
                8: "优",
                10: "极佳"
            }
        }
    )
])

# 回调:数值变化时动态更新下方显示的分段名称
@app.callback(
    Output("custom-gauge", "label"),
    Input("custom-gauge", "value")
)
def update_label(current_value):
    for item in RANGE_MAP:
        min_val, max_val = item["range"]
        if min_val <= current_value < max_val:
            return item["name"]
    # 处理边界最大值
    return RANGE_MAP[-1]["name"]

if __name__ == '__main__':
    app.run_server(debug=True)

关键配置说明

  • scale.custom 参数可以将指定数值点位的刻度标签替换为自定义字符串,实现分段名称显示在仪表盘刻度上的需求
  • 回调函数监听Gauge的value变化,匹配对应区间后更新下方的label字段,就能实时显示当前值所属的分段名称

内容的提问来源于stack exchange,提问作者Balázs Patai

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 12:27:05