How to obtain generated x-axis and y-axis range in plotly plot?

Issue

I have a very simple bubble chart, see below. the only thing i need is to be able to get the range (or the min and max) or the x and y axis generated.

trace = go.Scatter(
    x=df_test['total_points_mean'],
    y=df_test['total_points_std'],
    mode='markers',
    text=df_test['play_maker'],
    marker=dict(size=df_test['week_nunique'],
                color = df_test['week_nunique'],
                showscale=True)
)

layout = go.Layout(title='Scatter Plot')
fig = go.Figure(data=[trace],layout=layout)

From the resulting plot, the min and max of the x axis seems to be around ~10 and ~29, but i need a way to generate the exact value of the axis range.

enter image description here

Is there a way to access the generated axes range?

Solution

Getting the axis range from a plotly plot is not possible within the python implementation. You can only retrieve the range if you specify the axis range in your layout (but then you really don’t need it).

So if you try print(fig.layout.xaxis.range) you will get None.

If you need the limits then you’ll need to make your own and apply it to the layout:

  1. get the min and max of the x-values: xmin, xmax
  2. pad these values with some factor: xlim = [xmin*.95, xmax*1.05]
  3. update the layout: fig.update_layout(xaxis=dict(range=[xlim[0],xlim[1]]))

Now if you try print(fig.layout.xaxis.range) you’ll get the axis range.

This was bugging me a great deal so I had to dig deeper, credit goes to @Emmanuelle on the plotly forums for confirming this reality.

UPDATE 20210129: Plotly has added .full_figure_for_development() method.

The .full_figure_for_development() method provides Python-level access
to the default values computed by Plotly.js. This method requires the
Kaleido package, which is easy to install and also used for static
image export.

So now you can:

full_fig = fig.full_figure_for_development()
print(full_fig.layout.xaxis.range)

Answered By – jayveesea

Answer Checked By – David Marino (AngularFixing Volunteer)

Leave a Reply

Your email address will not be published.