Skip to content

Plotting data only on secondary_y axes ignores subplot grid #4302

Open
@azellner86

Description

@azellner86

Hello,

running the following code will produce a 2x2 subplot grid with data on the primary_y axes and data on one secondary_y axes.

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

rows = 2
cols = 2

fig = make_subplots(rows=rows, cols=cols, specs=[[{"secondary_y": True}] * cols] * rows)

fig.add_trace(go.Scatter(x=np.arange(5), y=np.arange(5), name='1:1 primary_y',),
              secondary_y=False, row=1, col=1)

fig.add_trace(go.Scatter(x=np.arange(5), y=np.arange(5), name=f'1:2 primary_y',),
              secondary_y=False, row=1, col=2)

fig.add_trace(go.Scatter(x=np.arange(5), y=np.arange(5), name=f'2:1 primary_y',),
              secondary_y=False, row=2, col=1)

fig.add_trace(go.Scatter(x=np.arange(5), y=np.arange(5), name=f'2:2 primary_y',),
              secondary_y=False, row=2, col=2)

# plot on secondary_y
fig.add_trace(go.Scatter(x=np.arange(5) + 1, y=np.arange(5), name=f'2:2 secondary_y',),
              secondary_y=True, row=2, col=2)

fig.update_layout(height=400, width=600)

fig.write_html('test_bug.html')

grafik

however if you don’t plot any data on a primary_y axes but leave the data on the secondary_y axes the height of the axes will take up the whole height of the figure

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

rows = 2
cols = 2

fig = make_subplots(rows=rows, cols=cols, specs=[[{"secondary_y": True}] * cols] * rows)

fig.add_trace(go.Scatter(x=np.arange(5), y=np.arange(5), name='1:1 primary_y',),
              secondary_y=False, row=1, col=1)

fig.add_trace(go.Scatter(x=np.arange(5), y=np.arange(5), name=f'1:2 primary_y',),
              secondary_y=False, row=1, col=2)

fig.add_trace(go.Scatter(x=np.arange(5), y=np.arange(5), name=f'2:1 primary_y',),
              secondary_y=False, row=2, col=1)

# fig.add_trace(go.Scatter(x=np.arange(5), y=np.arange(5), name=f'2:2 primary_y',),
#               secondary_y=False, row=2, col=2)

# plot on secondary_y
fig.add_trace(go.Scatter(x=np.arange(5) + 1, y=np.arange(5), name=f'2:2 secondary_y',),
              secondary_y=True, row=2, col=2)

fig.update_layout(height=400, width=600)

fig.write_html('test_bug.html')

grafik

is this behaviour intentional?

Metadata

Metadata

Assignees

No one assigned

    Labels

    P3backlogbugsomething broken

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions