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

