[matplotlib] 15. 各軸の比率が等しい図

matplotlib

はじめに

Matplotlibで各軸の比率を等しくするための方法を解説。axis(‘equal’)やaxis(‘scaled’)などの関数を使用して、x軸とy軸の縮尺が同じ図を作成する方法を紹介します。

コード

解説

モジュールのインポート

画像を保存する際の解像度(dpi)を130に設定するために、plt.rcParams[‘savefig.dpi’]=130を使用しています。

バージョン

図の生成

subplots()関数を使用して2行2列の4つの図を作成します。

左上の図(default)

patches.CirclePolygon()関数で円を多角形で近似した図形を描画できます。xyは中心座標、radiusは半径、resolutionは多角形の角数を指定します。この例では12角形を使用しています。

axs[0, 0].add_patch(cp1)でこの図形を図中に挿入します。正12角形のはずですが、軸比率が等しくないため歪んだ状態で表示されています。

右上の図(axis(‘equal’))

axs[0, 1].axis(‘equal’)を使用することで、x軸とy軸のスケールが等しくなります。その結果、正確な12角形が表示されます。ただし、この方法ではaxs[0, 1].axis([0, 1, 0, 1])のように表示範囲を設定しても反映されないという制限があります。

特定の軸範囲を設定したい場合は、代わりにaxis(‘scaled’)を使用しましょう。

左下の図(axis(‘scaled’))

axs[1, 0].axis(‘scaled’)を使用すると、軸範囲の設定が可能になります。この例では、axs[1, 0].axis([0, 2, 0, 2])と指定し、x軸とy軸の両方を0~2の範囲で表示しています。ただし、この設定により図の形状は変化します。

右下の図(set_aspect(‘equal’, ‘box’))

axs[1, 1].set_aspect(‘equal’, ‘box’)を使用することでも図の形状が変化し、x軸とy軸のアスペクト比が等しくなります。

コードをダウンロード(.pyファイル)

コードをダウンロード(.ipynbファイル)

まとめ

Matplotlibで各軸の比率を等しくするにはaxis(‘equal’)やaxis(‘scaled’)関数が有効です。データの形状や縮尺が重要な場合、これらの関数を使うことで視覚的に正確なグラフを作成できます。特に地図や幾何学的な図形を描画する際に役立つテクニックです。

参考

matplotlibで座標軸を調整する - Qiita
自分で解説しようかと思いましたが、axisが便利すぎて特に言う事がないのでマニュアルの和訳を載せておきます。 nbviewerに表示例を載せましたのでついてに見てください。 matplotlib.pyplot.axis(*v, **kwar...

コメント