How to set the range of the y axis in Plotly

Controlling the range of the y-axis in Plotly is essential for effectively visualizing your data. This is how to set the y-axis range for various plot types in Plotly.

1. Setting the Y-Axis Range for the Entire Figure

The most common way to set the y-axis range is to use the yaxis attribute within the layout of your figure.

import plotly.graph_objects as go

fig = go.Figure(data=[go.Scatter(x=[1, 2, 3], y=[4, 5, 6])])

fig.update_layout(yaxis_range=[2, 8])  # Set y-axis range from 2 to 8

fig.show()

This code creates a simple scatter plot and then uses fig.update_layout(yaxis_range=[2, 8]) to set the y-axis range from 2 to 8. The first value in the list is the minimum, and the second value is the maximum.

See also  Exploding out slices of a Pie Chart in Plotly

2. Setting the Y-Axis Range for Specific Subplots (if applicable)

If you have subplots, you can set the y-axis range for each subplot individually by referencing them by their ID (e.g., ‘yaxis1’, ‘yaxis2’).

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

fig = make_subplots(rows=2, cols=1)

fig.add_trace(go.Scatter(x=[1, 2, 3], y=[4, 5, 6]), row=1, col=1)
fig.add_trace(go.Scatter(x=[1, 2, 3], y=[7, 8, 9]), row=2, col=1)

fig.update_layout(
    yaxis1_range=[2, 8],  # Range for the first subplot
    yaxis2_range=[5, 10]   # Range for the second subplot
)

fig.show()

3. Setting the Y-Axis Range Automatically (using `autorange`)

Plotly can automatically determine the y-axis range based on the data. However, you can also use the `autorange` attribute to explicitly tell Plotly to recalculate the range. This is useful if you’ve added or modified data and want to update the axis limits.

import plotly.graph_objects as go

fig = go.Figure(data=[go.Scatter(x=[1, 2, 3], y=[4, 5, 6])])

fig.update_layout(yaxis_autorange=True)  # Automatically set the y-axis range

fig.show()

You can also set `yaxis_autorange` to 'reversed' to reverse the direction of the y-axis.

See also  How to hide legend in Plotly

4. Setting the Y-Axis Range with `range` (alternative syntax)

You can also use the `range` attribute directly within the `yaxis` dictionary:

import plotly.graph_objects as go

fig = go.Figure(data=[go.Scatter(x=[1, 2, 3], y=[4, 5, 6])])

fig.update_layout(yaxis=dict(range=[2, 8]))

fig.show()

5. Setting the Y-Axis Range with `fixedrange` (to prevent user interaction)

You can use `fixedrange` to prevent the user from zooming or panning the y-axis. This is useful when you want to ensure the user sees a specific range of data.


import plotly.graph_objects as go

fig = go.Figure(data=[go.Scatter(x=[1, 2, 3], y=[4, 5, 6])])

fig.update_layout(yaxis_fixedrange=[2, 8]) # User can't zoom/pan y-axis

fig.show()

Which Method to Use?

  • Use yaxis_range (or `yaxis=dict(range=[…])`) for explicitly setting the y-axis range. This is the most common and direct approach.
  • Use yaxis_autorange to let Plotly automatically determine the range.
  • Use yaxis1_range, yaxis2_range, etc., for setting ranges of individual subplots.
  • Use `yaxis_fixedrange` to prevent user interaction with the y-axis range.
See also  Creating Interactive Scatter Plots with Plotly in Python