Plotly,x和y轴的比例相同

时间:2015-06-24 18:02:45

标签: python plotly

我正在使用plotly for python而我无法设置xy轴,因此它们可以具有相同的比例:

这是我的布局:

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

然后我得到这样的东西!

enter image description here

为什么x和y的比例不同?这将影响我的可视化。

如何获得带方形单元格的网格?

4 个答案:

答案 0 :(得分:18)

最后,此功能已实施。

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

请参阅此处示例https://plot.ly/python/axes/#fixed-ratio-axes

答案 1 :(得分:6)

您可以在布局中为 height width 指定相同的长度。这是一个例子:

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,
)

答案 2 :(得分:2)

@ neda的答案仅适用于x和y的相等范围 - 这种情况很少发生。这似乎是许多人要求的东西,比如matplotlib的轴('等于')。见https://github.com/plotly/plotly.py/issues/70

现在,我分别使用两个范围的乘数 - 基本上定义了每个轴上每个单位长度的长度。

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

即使这样做,网格也不是%100完美正方形..

答案 3 :(得分:0)

ml_mx = max(Curve)
ml_mn = min(Curve)
ap_mx = max(Curve2)
ap_mn = min(Curve2)

if ml_mx > ap_mx:
    mx = ml_mx
else:
    mx = ap_mx

if ml_mn < ap_mn:
    mn = ml_mn
else:
    mn = ap_mn

mx = mx + mx * 0.2
mn = mn - mn * 0.2

fig_graficas.update_yaxes(
    range = [mn,mx]
)
fig_graficas.update_xaxes(
    range = [mn,mx]
)