Dash中Plotly Figure创建完成后如何正确更新color_discrete_map颜色映射
错误原因
color_discrete_map是Plotly Express绘图函数的专属构造参数,不属于Plotly Figure对象的布局属性,因此直接通过update_layout传递该参数会触发属性不存在的错误。你之前调用update_traces不生效,是因为该方法不识别color_discrete_map参数,折线图的trace颜色需要通过line.color属性修改。
正确实现方式
前提:调用px.line时已指定color参数
如果你最初创建折线图时已经通过color参数绑定了分类字段,即fig = px.line(data, color='你的分类字段名'),可以通过以下两种方式修改颜色映射:
- 方法1:用selector定向匹配修改
fig.update_traces(line_color="gold", selector={"name": "Gold"}) fig.update_traces(line_color="silver", selector={"name": "Silver"})
- 方法2:批量遍历修改,适合映射规则较多的场景
color_discrete_map = {"Gold": "gold", "Silver": "silver"} for trace in fig.data: if trace.name in color_discrete_map: trace.line.color = color_discrete_map[trace.name]
前提:调用px.line时未指定color参数
如果你最初创建时没有绑定分类字段,后续需要拆分多组并设置颜色映射,建议重新调用px.line构造Figure实例,直接传入color和color_discrete_map参数,性能和代码可读性都更高:
# 补充color参数绑定分类字段,直接传入颜色映射即可 fig = px.line(data, color='你的分类字段名', color_discrete_map={"Gold": "gold","Silver": "silver"})
内容的提问来源于stack exchange,提问作者Robin Andrews
相关产品推荐
相关产品推荐

