Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

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?

like image 610
theberzi Avatar asked Feb 25 '19 09:02

theberzi


People also ask

How do you zoom on a Plotly graph?

To zoom along only one axis, click and drag near the edges of either one of the axes. Additionally, to zoom-in along both the axes together, click and drag near the corners of both the axes.

What is the difference between Plotly and Plotly Express?

Using Plotly, it is easy to create a Dashboard. The difference from the Plotly Express is that you will have to use plotly. graph_objects as go instead of plotly express. The gist below in my GitHub has the entire code that you can use as a template to create your own visualizations.

What is margin in Plotly?

The default values for the margins are 80 pixels on the left, right, and bottom and 100 pixels on the top.


2 Answers

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)
like image 71
Ébe Isaac Avatar answered Sep 28 '22 10:09

Ébe Isaac


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.

like image 27
asongtoruin Avatar answered Sep 28 '22 11:09

asongtoruin