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

