Plotly, same scale for x and y axis Plotly, same scale for x and y axis python python

Plotly, same scale for x and y axis


Finally, this feature is implemented.

layout = go.Layout(yaxis=dict(scaleanchor="x", scaleratio=1))

Update: in new versions of plotly, use the following:

fig.update_yaxes(    scaleanchor = "x",    scaleratio = 1,  )

See example here https://plot.ly/python/axes/#fixed-ratio-axes.


You can assign same length for height and width in your layout. Here is an example:

layout = Layout(    xaxis=XAxis(       range=[-150, 150],       showgrid=True,       zeroline=True,       showline=True,       gridcolor='#bdbdbd',       gridwidth=2,       zerolinecolor='#969696',       zerolinewidth=4,       linecolor='#636363',       linewidth=6    ),    yaxis=YAxis(        range=[-150,150],        showgrid=True,        zeroline=True,        showline=True,        gridcolor='#bdbdbd',        gridwidth=2,        zerolinecolor='#969696',        zerolinewidth=4,        linecolor='#636363',        linewidth=6   ),   height=600,   width=600,)


@neda's answer only works for equal ranges on both x and y - which is seldom the case. This seems to be something a lot of people are asking for, something like matplotlib's axis('equal'). See https://github.com/plotly/plotly.py/issues/70

For now, I use a multiplier to both ranges separately - essentially defining how long each unit length is on each axis.

height=(yMax - yMin) * mulwidth= (xMax - xMin) * mul

Even by doing this, the grid is not a %100 perfect square..