Plotly子图:能否让单个子图占据多列或多行?
实现Plotly子图的自定义布局:两图并排+一图跨整行
这个布局完全可行,借助Plotly的make_subplots函数,通过配置网格规格(specs参数)就能轻松实现。核心是设置一个2行2列的基础网格,让第三个子图横跨2列即可。
具体实现代码示例
import plotly.graph_objects as go from plotly.subplots import make_subplots # 定义子图网格规格:2行2列,第二行第一个子图跨2列 fig = make_subplots( rows=2, cols=2, specs=[ [{"type": "scatter"}, {"type": "scatter"}], # 第一行两个独立子图 [{"type": "bar", "colspan": 2}, None] # 第二行第一个子图占满整行,第二个位置留空 ] ) # 向子图中添加数据 # 第一行第一列子图 fig.add_trace( go.Scatter(x=[1,2,3], y=[4,5,6], name="子图1"), row=1, col=1 ) # 第一行第二列子图 fig.add_trace( go.Scatter(x=[1,2,3], y=[6,5,4], name="子图2"), row=1, col=2 ) # 第二行跨列子图 fig.add_trace( go.Bar(x=[1,2,3], y=[2,3,1], name="子图3"), row=2, col=1 ) # 调整整体布局样式 fig.update_layout( height=600, width=900, title_text="自定义子图布局效果", showlegend=True ) fig.show()
关键参数说明
specs:二维列表,每个元素对应网格中的一个位置,通过colspan=2指定子图横跨的列数,对应的空白位置设为None即可。- 添加子图时,跨列的子图只需指定其起始列(
col=1),Plotly会自动识别它占据的范围。
内容的提问来源于stack exchange,提问作者euh
相关产品推荐
相关产品推荐

