Plotly Python中color_continuous_scale是否有效?甘特图配置报错如何解决
报错原因
- 参数归属错误:
color_continuous_scale是Plotly Express绘图函数的入参,不属于plotly.graph_objs.Layout的顶层属性,直接在update_layout()中传入该参数会触发属性不存在错误。如果需要在布局更新时修改连续色阶,需使用coloraxis.colorscale属性路径。 - 参数格式错误:你传入的色阶列表括号不匹配、结构嵌套错误。Plotly要求连续色阶为多个(比例值, 颜色值)元组组成的一维列表,你写的
[(0, "red"), [0.5, "yellow", (1, "green")]]中0.5节点错误使用方括号,且将1的节点嵌套在内,不符合参数格式要求。 - 拼写错误:报错信息提示存在
colour_continuous_scale的非法属性路径,Plotly所有参数统一使用美式拼写,使用英式拼写colour也会触发属性不存在错误。
正确配置方案
场景1:使用Plotly Express px.timeline() 绘制甘特图(推荐)
方式1:绘图时直接传入色阶参数
import plotly.express as px import pandas as pd # 示例甘特图数据 df = pd.DataFrame([ dict(Task="任务1", Start='2024-01-01', Finish='2024-01-10', Progress=20), dict(Task="任务2", Start='2024-01-05', Finish='2024-01-15', Progress=50), dict(Task="任务3", Start='2024-01-10', Finish='2024-01-20', Progress=80) ]) # 绘图时直接配置连续色阶 fig = px.timeline( df, x_start="Start", x_end="Finish", y="Task", color="Progress", color_continuous_scale=[(0, "red"), (0.5, "yellow"), (1, "green")] ) fig.update_layout(title_font_size=42, font_size=10, title_font_family="Proxima Nova") fig.show()
方式2:绘图后通过布局更新修改色阶
fig.update_layout( title_font_size=42, font_size=10, title_font_family="Proxima Nova", # 通过coloraxis配置色阶 coloraxis={"colorscale": [(0, "red"), (0.5, "yellow"), (1, "green")]} )
场景2:使用figure_factory.create_gantt()绘制甘特图
该旧版接口需通过colors参数配置连续色阶:
import plotly.figure_factory as ff df = [ dict(Task="任务1", Start='2024-01-01', Finish='2024-01-10', Complete=20), dict(Task="任务2", Start='2024-01-05', Finish='2024-01-15', Complete=50), dict(Task="任务3", Start='2024-01-10', Finish='2024-01-20', Complete=80) ] # 自定义连续色阶 colors = [(0, "red"), (0.5, "yellow"), (1, "green")] fig = ff.create_gantt(df, colors=colors, index_col='Complete', show_colorbar=True) fig.update_layout(title_font_size=42, font_size=10, title_font_family="Proxima Nova") fig.show()
内容的提问来源于stack exchange,提问作者hari
相关产品推荐
相关产品推荐

