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

Plotly Express多折线图中设置指定折线宽度的方法

Plotly.express 单独指定Close折线宽度的实现方法

失效原因

你之前编写的for_each_trace条件判断逻辑本身没有语法错误,失效是因为代码执行顺序问题:如果将单条trace的自定义配置放在fig.update_traces()这类全局trace配置之前,全局配置会覆盖单条trace的自定义参数,导致宽度修改不生效。

修正方案

将针对Close折线的宽度调整代码,移动到所有全局trace配置、布局配置、坐标轴配置之后,fig.show()调用之前即可。不需要在单条配置里重复指定Close的颜色,你预设的color_discrete_sequence已经为Close分配了黑色,重复定义color反而可能导致配色异常。

修正后的完整可运行代码如下:

import plotly.express as px
ticker = 'TSLA'
colours = ['steelblue', 'tan', 'black', 'red', 'green']
fig = px.line(
    df.tail(150), 
    x=df.tail(150).index, 
    y=['middle_band', 'SMA_200', 'upper_band', 'lower_band','Close'], 
    title=f'{ticker}', 
    color_discrete_sequence=colours, 
    width=800, 
    height=600
)

# 全局折线统一配置
fig.update_traces(textfont_size=12, showlegend=True)

# 图例、布局配置
fig.update_layout(legend=dict(
    yanchor="top",
    y=0.9,
    xanchor="left",
    x=0.02
))

# 坐标轴配置
fig.update_xaxes(title_text='Price evolution over time', title_font={"size": 16})
fig.update_yaxes(title_text='Price', tickprefix="$")

# 单独调整Close折线宽度,放在所有全局配置之后避免被覆盖
fig.for_each_trace(
    lambda trace: trace.update(line=dict(width=4)) if trace.name == "Close" else ()
)

fig.show()

效果说明

  • 上述代码将Close折线宽度设置为4,其余折线保持Plotly默认的2px宽度,视觉上会明显突出Close价格线,你可以根据实际需求调整width的数值
  • 其余折线如果需要单独定制样式,也可以通过相同的for_each_trace逻辑,匹配trace.name对应修改即可

原始运行效果参考:
TESLA price evolution over time

内容的提问来源于stack exchange,提问作者Zen4ttitude

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 14:57:27