如何自定义Plotly双生子图中条形图的颜色条位置及参数?
调整Plotly子图中条形图颜色条的位置、高度与锚点参数
要调整子图中条形图的颜色条位置、高度等参数,核心是在marker.colorbar字典中配置画布坐标系下的位置与尺寸参数——默认颜色条会锚定整个画布,需要手动对齐到目标子图区域。
关键参数说明
x/y:颜色条在画布坐标系(取值0-1,左下角为原点)的位置len:颜色条的高度(垂直方向长度),取值0-1,对应画布高度占比xanchor/yanchor:颜色条的锚点对齐方式,比如yanchor="middle"让颜色条垂直居中yref:默认"paper"使用画布坐标系,无需修改
修改后的代码示例
结合你提供的子图布局(下子图row_width为0.75),调整颜色条参数如下:
from plotly.subplots import make_subplots import plotly.graph_objects as go # 修正子图创建代码(补全subplot_titles的括号) fig = make_subplots( rows=2, cols=1, vertical_spacing=0.0, specs=[[{"secondary_y": False}], [{"secondary_y": True}]], subplot_titles=(figuretitle, ""), # 两个子图对应两个标题,第二个留空或自定义 row_width=[0.25, 0.75], # 从下到上的子图高度占比 shared_xaxes=True ) # 添加条形图轨迹,调整颜色条参数 fig.add_trace( go.Bar( x=time_plot_location_list, y=slope_list_horner, marker=dict( color=slope_list_horner, colorscale="Bluered_r", showscale=True, colorbar=dict( title="Horner", # 颜色条位置:靠右对齐,垂直居中于下子图 x=1.05, y=0.375, # 下子图垂直范围0-0.75,中心在0.375 len=0.7, # 颜色条高度匹配下子图(略小于0.75避免超出) xanchor="left", yanchor="middle", # 可选:调整字体大小优化显示 title_font=dict(size=12), tickfont=dict(size=10) ) ), text=slope_list_horner, texttemplate='%{y:.2f}', hovertemplate='Horner:%{y:.2f}', ), row=2, # 下子图对应row=2 col=1 ) # 如果热力图也有颜色条,同样调整其参数避免重叠(示例) # fig.add_trace( # go.Heatmap(...), # row=1, col=1 # ) # fig.update_traces( # marker_colorbar=dict( # x=1.05, # y=0.875, # 上子图垂直范围0.75-1,中心在0.875 # len=0.2, # xanchor="left", # yanchor="middle" # ), # selector=dict(type="heatmap") # ) fig.show()
注意事项
- 子图的
row_width是从下到上的高度占比,所以下子图垂直范围是0 ~ 0.75,上子图是0.75 ~ 1,颜色条的y值要对应子图中心位置 - 如果需要更精准对齐,也可以通过
fig.layout查看子图的坐标轴位置,再微调y和len参数
内容的提问来源于stack exchange,提问作者roudan
相关产品推荐
相关产品推荐

