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..