如何在Plotly单曲线图表中添加双X轴(Python)
Plotly 单曲线添加双X轴(无额外曲线)解决方案
核心思路
无需新增轨迹,直接通过配置第二个X轴并绑定到现有曲线的Y轴,即可实现底部主X轴+顶部副X轴的效果,不会生成多余曲线。
修改后的完整代码
import plotly.graph_objects as go fig = go.Figure() # 添加原曲线轨迹,仅绑定主X轴数据 for percentile, color in zip(percentiles_m, colors_m): fig.add_trace( go.Scatter( y=curves_df[percentile], x=curves_df.index, # 主X轴使用index数据 name=percentile + "th", mode="lines+markers", textposition="top center", line=dict(color=color), ) ) # 配置底部主X轴 fig.update_xaxes( title_text="Repetition", tickangle=0, tickfont=dict(size=11), dividerwidth=1, side="bottom", position=0 ) # 添加并配置顶部副X轴 fig.update_layout( xaxis2=dict( title_text="Remaining patients", tickangle=0, tickfont=dict(size=11), side="top", overlaying="x", # 与主X轴共享Y轴空间 position=0, # 绑定主副轴刻度对应关系,确保曲线位置匹配 tickvals=curves_df.index, ticktext=remaining_patients ) ) # 配置Y轴 fig.update_yaxes(title_text=feature_selected, tickfont=dict(size=11)) fig.show()
关键说明
- 原轨迹仅需传入一组X轴数据,之前传入双X列表的写法会导致曲线异常。
xaxis2的overlaying="x"参数是核心,让顶部轴与主X轴共享同一Y轴区域,不会额外生成曲线。tickvals和ticktext用于将主X轴的刻度值映射为副X轴的显示文本,保证两个轴的刻度完全对应曲线位置。如果主副轴是数值映射关系(比如线性转换),可自行计算对应刻度值替换即可。
内容的提问来源于stack exchange,提问作者carluqcor98
相关产品推荐
相关产品推荐

