Is there a way to start a plot already zoomed on a specific area using plotly?

I have a scatter plot made with plotly (specifically offline plotly with the Python API on a Jupyter Notebook) and as you know, plotly makes it easy for the user to zoom and frame specific areas, but I'd like the plot to start already focussed on a specific area of my choosing.

I can't find anything relevant in the documentation (maybe because I don't know where to look or what terms to look up). Is there a way to do this, and if so, how? And how does the setting differ when using subplots rather than a Figure object?


Solution 1:

When you specify your Layout, under the xaxis and yaxis parameters, you can specify a range, e.g.

import plotly.graph_objs as go

# ...    

layout = go.Layout(
    yaxis=dict(
        range=[0, 100]
    ),
    xaxis=dict(
        range=[100, 200]
    )
)
fig = go.Figure(data=data, layout=layout)

Documentation for this can be found for the xaxis here and yaxis here.

Solution 2:

If your axis includes dates, then make sure you specify the type as date before setting the range. Otherwise, you'll receive unexpected results.

start_date = "2019-09-26"
start_date = "2019-10-18"

fig.update_xaxes(type="date", range=[start_date, end_date])

If the fig consists of subplots with shared x axes (or y axes), you can set the above range to the row and column corresponding to the last shared plot.

The following is for a single-column subplot with each a graph plot in each row, totalling 7 rows.

last_row = 7
last_col = 1

fig.update_xaxes(type="date", range=[start, end], row=last_row, col=last_col)