python - 如何将 update_layout 边距限制为 Plotly / Dash 中的一个子图?
问题描述
在 2 行 1 列布局中,main
绘图位于上方sub
。
fig.add_trace(go.Scatter(x=df.index, y=main_data, name='main',
line=dict(color='white', width=1), row=1, col=1)
fig.add_trace(go.Bar(x=df.index, y=sub_data, name='sub', row=2, col=1)
当我使用update_layout
如下:
fig.update_layout(height=400, margin=dict(t=30, b=15, l=15), pad=20)
填充同时 应用于main
和sub
。
有没有办法让填充仅适用于main
?
解决方案
fig.update_layout()
仅适用于整个图形的属性,这就是为什么您不能fig.update_layout(row = 2, col = 2)
像使用fig.update_traces(row, col)
. 因此,根据您希望在这里实现的目标,您将不得不通过specs
和/或row_heights
在column_widths
您的make_subplots()
通话中调整子图的外观。
这是使用这两种方法的示例:
完整代码:
from plotly.subplots import make_subplots
import plotly.graph_objects as go
fig = make_subplots(
rows=5, cols=2,
column_widths = [0.7, 0.3],
row_heights = [0.2, 0.2, 0.2, 0.1, 0.1],
specs=[[{}, {"rowspan": 2}],
[{}, None],
[{"rowspan": 2, "colspan": 2}, None],
[None, None],
[{}, {}]],
# print_grid=True
)
fig.add_trace(go.Scatter(x=[1, 2], y=[1, 2], name="(1,1)"), row=1, col=1)
fig.add_trace(go.Scatter(x=[1, 2], y=[1, 2], name="(1,2)"), row=1, col=2)
fig.add_trace(go.Scatter(x=[1, 2], y=[1, 2], name="(2,1)"), row=2, col=1)
fig.add_trace(go.Scatter(x=[1, 2], y=[1, 2], name="(3,1)"), row=3, col=1)
fig.add_trace(go.Scatter(x=[1, 2], y=[1, 2], name="(5,1)"), row=5, col=1)
fig.add_trace(go.Scatter(x=[1, 2], y=[1, 2], name="(5,2)"), row=5, col=2)
fig.update_layout(height=600, width=600, title_text="specs examples")
fig.show()
推荐阅读
- influxdb - 如何解释电报高基数?
- google-chrome - 电子网络视图在极少数情况下被打乱
- sql - 从仓库库存中提取数据,按文章分组,但如果描述发生变化,则使用最后一个 USED
- c - 努力理解为什么这没有打印出来
- python - 如何在python中使用urllib接收用户想要检索的文件的大小
- javascript - 如何使用 angular2+electron 桌面应用程序将文件保存到具有特定扩展名的本地系统?
- node.js - 数据未在 mongodb 上发布
- javascript - 从 js 文件传递 package.json 命令
- docker - 如何公开 Docker 容器
- llvm - LLVM 寄存器在函数中的使用