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

Plotly多子图场景下非首个子图Spikes不显示如何解决

问题原因

Plotly生成多子图时,会为每个子图的坐标轴自动分配独立的配置项,从左到右、从上到下x轴依次命名为xaxis、xaxis2、xaxis3……,y轴对应为yaxis、yaxis2、yaxis3……。你原有代码仅修改了第一个子图的xaxis配置,因此只有首个子图能显示spikes。

另外补充:showspikes属于坐标轴的配置属性,不属于trace的属性,因此无法通过fig.update_traces调用设置,必须在x/y轴的配置层面修改。


可行解决方案

方案1:批量更新所有坐标轴配置(推荐)

直接调用update_xaxes、update_yaxes方法全局设置所有子图的坐标轴spikes属性,不需要逐个指定轴,适配任意数量子图的场景:

import plotly.graph_objs as go
from plotly.subplots import make_subplots

fig = make_subplots(rows=1, cols=2)

x1 = list(range(100))
y1 = [val**2 for val in x1]

x2 = list(range(150, 250))
y2 = [1./val for val in x2]

fig.add_trace(go.Scatter(x=x1, y=y1), row=1, col=1)
fig.add_trace(go.Scatter(x=x2, y=y2), row=1, col=2)

# 批量设置所有x轴显示spikes
fig.update_xaxes(showspikes=True)
# 若需要y轴也显示spikes可取消注释下行
# fig.update_yaxes(showspikes=True)

fig.show()

方案2:单独指定每个坐标轴配置

如果不同子图需要配置不同的spikes规则,可以逐个指定对应轴的参数:

fig.update_layout(
    xaxis=dict(showspikes=True), # 第一个子图x轴
    xaxis2=dict(showspikes=True) # 第二个子图x轴
)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 23:45:06