Plotly子图共享类别标签左对齐实现方案咨询
解决Plotly子图中水平箱线图Y轴类别标签左对齐的问题
针对你在共享Y轴的1行2列水平箱线图子图中,无法通过常规右侧Y轴hack实现Y轴类别标签左对齐的问题,可通过手动配置Y轴刻度属性的方式解决,以下是修改后的完整代码及关键说明:
修改后的代码
import plotly.graph_objects as go from plotly.subplots import make_subplots fig = make_subplots(rows=1, cols=2, shared_yaxes=True) # 第一个子图的箱线图,显式指定y值固定刻度位置 fig.add_box(x=[1,3,5,7], y=0, row=1, col=1, name='short') fig.add_box(x=[3,5,7,9], y=1, row=1, col=1, name='longer') fig.add_box(x=[1,4,6,8], y=2, row=1, col=1, name='even longer') # 第二个子图的箱线图,与第一个子图使用相同y值保持对齐 fig.add_box(x=[1,3,5,7], y=0, row=1, col=2, name='short') fig.add_box(x=[3,5,7,9], y=1, row=1, col=2, name='longer') fig.add_box(x=[1,4,6,8], y=2, row=1, col=2, name='even longer') # 核心配置:实现Y轴标签左对齐 fig.update_layout( showlegend=False, yaxis=dict( tickmode='array', tickvals=[0, 1, 2], ticktext=['short', 'longer', 'even longer'], tickangle=0, # 保持标签水平显示 tickfont=dict(align='left'), # 设置标签左对齐 side='left', position=0.01, # 调整轴位置让标签贴近左侧边缘 automargin=True # 自动调整边距防止标签被截断 ) ) fig.update_traces(marker_color='blue', orientation='h') fig.show()
关键实现说明
- 固定Y轴刻度位置:显式给每个箱线图指定
y值,确保Y轴刻度位置固定,为自定义标签提供准确对应关系 - 手动配置刻度标签:通过
tickmode='array'指定自定义刻度值与文本,替代Plotly默认生成的居中标签 - 标签对齐设置:通过
tickfont.align='left'直接设置标签左对齐,配合tickangle=0保持水平显示 - 轴位置调整:调整
position参数让Y轴贴近图表左侧,确保标签完全左对齐;automargin=True避免标签被图表边缘截断
这种方法无需依赖右侧Y轴的hack,完全适配共享Y轴的子图场景,能稳定实现Y轴类别标签左对齐的需求。
内容的提问来源于stack exchange,提问作者soungalo
相关产品推荐
相关产品推荐

