背景
matplotlibとはグラフの描画ができるpythonのライブラリです。値を描画する際の軸の表示設定を忘れた頃に見返したくなる気がするので、記事に関連情報を残します。
使ったもの
python 3.10.12
matplotlib 3.10.1
numpy 2.2.2
描画試験対象xが0から5πのsin波とy=x/5π
この記事では下記の記述で生成するxが0~5πの区間とsin波とy=x/5πの線を例にして描画領域を設定します。#!/usr/bin/python
import matplotlib.pyplot as plt
import numpy as np
x_sin = np.arange(0, 5*np.pi, 0.1)
y_sin = np.sin(x_sin)
x_line = [0,5*np.pi]
y_line = [0,1]
plt.plot(x_sin, y_sin, color="green")
plt.plot(x_line, y_line, color="black")
plt.show()
上記の処理を実行するとこうなります。
軸の表示の正と負を入れ替える gca().invert_xaxis()
showの前にinvert_xxisやinvert_yaxisを呼べば、x軸やy軸の正と負を入れ替えれます。plt.gca().invert_xaxis()
plt.show()
参考:
How to set the axis limits in Matplotlib?
matplotlib.axes.Axes.invert_xaxis
描画範囲を制限する set_xlim
set_xlimやset_ylimを使うと、描画領域を制限できます。plt.gca().set_xlim([2.5*np.pi, 5*np.pi])
plt.gca().set_ylim([0, 1])
plt.show()
set_lim関数に大きい値から先に渡せば、軸の正と負を入れ替えた表示も可能です。
plt.gca().set_xlim([5*np.pi, 2.5*np.pi])
plt.gca().set_ylim([0, 1])
plt.show()
参考:
How to set the axis limits in Matplotlib?
matplotlib.pyplot.axis
x軸とy軸を入れ替える: 良い方法求む
自分がさがした探した範囲ではplot済みの値のx軸とy軸を入れ替えて描画する方法は見つからなかったです。flip関数の実装が検討されたgithubの履歴を見つけはしましたが、それに関する機能追加はされてなさそうでした。
Axis swapping method? #6569
何か良い方法をご存知でしたら教えていただけると嬉しいです。
plot済みの要素の入れ替え方法は不明ですが、plotで描画するx軸とy軸の要素を入れ替えればx軸とy軸を入れ替えれます。
# plt.plot(x_sin, y_sin, color="green")
# plt.plot(x_line, y_line, color="black")
plt.plot(y_sin, x_sin, color="green")
plt.plot(y_line, x_line, color="black")
plt.show()
参考:
Axis swapping method? #6569
表示の比率を固定する: set_aspect
matplotlibの比率制御はautoが標準設定なので、画面の大きさに合わせて自動で比率が変更されます。表示可能な領域を最大限に活用するならautoが良いのですが、x軸とy軸を特定の比率で見たい場合はマウスで画面の縦横比をそれらしく合わせる手間が発生します。
一度だけなら良いですが、プログラムを何度も実行する場合は毎回マウス操作が手間です。
そんなときはset_aspectで期待する比率で描画する設定にしておくと楽です。
x軸とy軸の比率を1:1でグラフを見たいときはset_aspectでequalを設定します。
plt.gca().set_aspect('equal')
plt.show()
特定の比率で描画したい場合はset_aspectに「x軸の単位/y軸の単位」を渡します。
plt.gca().set_aspect(4/1)
plt.show()
参考:
How can I set the aspect ratio?
0 件のコメント :
コメントを投稿