Plotly:次要 y 轴导致右侧空白

Posted

技术标签:

【中文标题】Plotly:次要 y 轴导致右侧空白【英文标题】:Plotly: Secondary y-axis causes empty space on the right 【发布时间】:2020-12-10 20:49:41 【问题描述】:

我正在制作一个带有大量数据的图表,这些数据以超高分辨率运行。在添加第二个 y 轴时,我发现 plotly svg 组件内部的图表右侧出现了一个空白区域。当我关闭第二个轴时,那个空白空间消失了。当图表在整个屏幕上最大化时,可以很好地看到。

作为展示,我使用了 plotly 文档中的一个示例:

from plotly.subplots import make_subplots
import plotly.graph_objects as go

# Create figure with secondary y-axis
fig = make_subplots(specs=[["secondary_y": True]])

# Add traces
fig.add_trace(
    go.Scatter(x=[1, 2, 3], y=[40, 50, 60], name="yaxis data"),
    secondary_y=False,
)

fig.add_trace(
    go.Scatter(x=[2, 3, 4], y=[4, 5, 6], name="yaxis2 data"),
    secondary_y=True,
)

# Add figure title
fig.update_layout(
    title="Right margin",
    showlegend=False
)

# Set x-axis title
fig.update_xaxes(title_text="xaxis title")

# Set y-axes titles
fig.update_yaxes(title_text="<b>primary</b> yaxis title", secondary_y=False)
fig.update_yaxes(title_text="<b>secondary</b> yaxis title", secondary_y=True)

fig.show()

它产生以下图表,不再居中:

empty_space_on_the_right

我怎样才能摆脱那个空白?

【问题讨论】:

【参考方案1】:

您可以在fig.update_layout() 中指定边距。我将右边距设置为 0。

您还可以调整上边距、下边距和左边距。 例如 margin = dict(l=50, r=50, b=50, t=50)

# Add figure title
fig.update_layout(
    title="Right margin",
    showlegend=False,
    margin=dict(r=0)
)

【讨论】:

谢谢,这改进了图表。但是,如果你这样做,删除轴标题并查看宽度为 1900 和宽度为 600 的图表,你会发现在一种情况下,左轴到边界的距离比右轴大,反之亦然反之亦然。右侧边框上有一些随图表大小缩放的东西。虽然无法设置相对于图表大小的边距...【参考方案2】:

当包含secondary_y 时,计算水平尺寸时似乎有问题。这可以通过更改specs 传递的边距来修复:

fig = make_subplots(specs=[["secondary_y": True,"r":-0.06]])

在这种情况下,您可以调整大小,并且两边与边框的距离相同。

【讨论】:

以上是关于Plotly:次要 y 轴导致右侧空白的主要内容,如果未能解决你的问题,请参考以下文章

Plotly:双击放大图中的空白区域会在重置轴时选择新点

Plotly:如何使子图的 x 和 y 轴标题更大?

在 plotly.js 中向 y 轴标签添加一个单位

Plotly:是不是可以在情节时间线上添加第二个 y 轴?

Seaborn/Plotly 多个 y 轴

如何在 plotly 中绘制 y 轴刻度之间的水平线?