如何使用plotly.express添加次级x轴并合并图例布局配置
报错问题解决
你遇到的报错是因为make_subplots的specs参数不支持secondary_x配置项,官方仅提供了secondary_y的快捷配置入口,想要实现次级X轴需要手动配置轴属性,无需使用make_subplots方法,修正后的可运行代码如下:
import pandas as pd import plotly.express as px import plotly.graph_objects as go # 样例数据 df1=pd.DataFrame({'A':[1,2,3],'B':[4,5,6]}) df2=pd.DataFrame({'C':[10,20,30],'D':[40,50,60]}) # 初始化画布 fig = go.Figure() # 添加第一个数据集,绑定默认主X轴 fig.add_trace(go.Scatter(x=df1['A'], y=df1['B'], mode='markers', name='数据集1')) # 添加第二个数据集,绑定次级X轴 fig.add_trace(go.Scatter(x=df2['C'], y=df2['D'], mode='markers', name='数据集2', xaxis='x2')) # 手动配置次级X轴属性 fig.update_layout( xaxis=dict(title="第一X轴"), xaxis2=dict( title="第二X轴", overlaying='x', # 与主X轴重叠显示 side='top', # 展示在画布顶部 showgrid=False ), yaxis=dict(title="Y轴") ) fig.show()
布局配置合并说明
update_layout方法和fig.layout = layout的写法完全可以合并,两者本质都是修改画布的布局属性,区别仅在于:
fig.layout = layout是全量替换原有布局配置update_layout是增量修改,仅覆盖你指定的配置项,其余原有配置保留
你可以直接把所有布局配置整合到同一个字典里统一赋值,示例如下:
# 定义完整布局配置 custom_layout = go.Layout( # 你的图例配置 legend=dict( yanchor="top", y=0.99, xanchor="left", x=0.83, font=dict( family="Trebuchet", size=20, color="black" ), bgcolor="LightGray", bordercolor="Black", borderwidth=0 ), # 其他布局配置 title="双X轴散点图示例", xaxis=dict(title="第一X轴"), xaxis2=dict( title="第二X轴", overlaying='x', side='top', showgrid=False ), yaxis=dict(title="Y轴") ) # 直接赋值给fig.layout fig.layout = custom_layout
如果需要后续追加配置,也可以在赋值后继续调用update_layout方法,两者兼容不会冲突。
内容的提问来源于stack exchange,提问作者Elena Greg
相关产品推荐
相关产品推荐

