web-dev-qa-db-ja.com

プロット、x軸とy軸の同じスケール

pythonにplotlyを使用していますが、x軸とy軸を設定できないため、同じスケールにすることができます。

これが私のレイアウトです:

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でスケールが異なるのはなぜですか?それは私の視覚化に影響します。

正方形のセルを持つグリッドを取得するにはどうすればよいですか?

13
farhawa

レイアウトのheightwidthに同じ長さを割り当てることができます。次に例を示します。

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

最後に、この機能が実装されます。

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

ここの例を参照してください https://plot.ly/python/axes/#fixed-ratio-axes

20
Brut

@nedaの答えは、xとyの両方の等しい範囲でのみ機能します-これはめったにありません。これは、matplotlibのaxis( 'equal')のように、多くの人が求めているもののようです。 https://github.com/plotly/plotly.py/issues/7 を参照してください

今のところ、私は両方の範囲に別々に乗数を使用します-基本的に、各単位長が各軸上にある長さを定義します。

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

これを行っても、グリッドは100%の完全な正方形ではありません。

2
ahmedhosny