Matplotlib のプロットでテキストを回転させる

Beginner

This tutorial is from open-source community. Access the source code

はじめに

この実験では、Matplotlib でのテキストオブジェクトを画面座標系ではなく、プロット上の線やオブジェクトに対して回転させる方法を示します。この手法は、プロット上の特定のものに対してテキストを回転させたい場合に役立ちます。

VM のヒント

VM の起動が完了したら、左上隅をクリックして ノートブック タブに切り替え、Jupyter Notebook を使って練習しましょう。

時々、Jupyter Notebook が読み込み終わるまで数秒待つ必要がある場合があります。Jupyter Notebook の制限により、操作の検証を自動化することはできません。

学習中に問題に遭遇した場合は、Labby にお問い合わせください。セッション後にフィードバックを提供してください。すぐに問題を解決いたします。

対角線を描画する

まず、Matplotlib の plot() 関数を使って 45 度の対角線を描画します。

fig, ax = plt.subplots()

## Plot diagonal line (45 degrees)
h = ax.plot(range(0, 10), range(0, 10))

プロットの範囲を調整する

次に、プロットの範囲を調整して、画面上で見たときに対角線がもはや 45 度の角度にならないようにします。これにより、画面座標系ではなく、線に対してテキストを回転させる必要が生じるシナリオが作成されます。

## set limits so that it no longer looks on screen to be 45 degrees
ax.set_xlim([-10, 20])

テキストの配置と回転角度を定義する

次に、グラフ上にテキストを描画したい場所と使用したい回転角度を定義します。

## Locations to plot text
l1 = np.array((1, 1))
l2 = np.array((5, 5))

## Rotate angle
angle = 45

正しく回転させないでテキストを描画する

次に、線の回転を考慮せずに指定された場所にテキストを描画します。これにより、テキストが 45 度の角度で回転してしまい、これは私たちが望むものではありません。

## Plot text
th1 = ax.text(*l1, 'text not rotated correctly', fontsize=16,
              rotation=angle, rotation_mode='anchor')

正しく回転させてテキストを描画する

最後に、線の回転を考慮しながら指定された場所にテキストを描画します。これにより、テキストが線に対して正しい角度で回転します。

## Plot text
th2 = ax.text(*l2, 'text rotated correctly', fontsize=16,
              rotation=angle, rotation_mode='anchor',
              transform_rotates_text=True)

グラフを表示する

2 つのテキストの描画結果の違いを見るために、グラフを表示します。

plt.show()

まとめ

この実験では、Matplotlib でのテキストオブジェクトをグラフ上の線やオブジェクトに対して回転させる方法を学びました。transform_rotates_text パラメータを使用することで、テキストが画面座標系ではなく、線に対して正しい角度で回転するようにすることができました。