私はmatplotlibのXとY軸を制限したいのですが、特別なサブプロットのためです。私が見ることができるようにサブプロット図自体は少しの軸特性も持っていません。たとえば、2番目のプロットの範囲のみを変更したいと思います。
import matplotlib.pyplot as plt
fig=plt.subplot(131)
plt.scatter([1,2],[3,4])
fig=plt.subplot(132)
plt.scatter([10,20],[30,40])
fig=plt.subplot(133)
plt.scatter([15,23],[35,43])
plt.show()
ステートマシンのインターフェースだけでなく、matplotlibへのOOインターフェースについても少し学ぶ必要があります。 plt.*
関数のほとんどすべては、基本的にgca().*
を実行するシンラッパーです。
plt.subplot
は、 axes
オブジェクトを返します。 Axesオブジェクトへの参照を取得したら、それを直接プロットしたり、範囲を変更したりできます。
import matplotlib.pyplot as plt
ax1 = plt.subplot(131)
ax1.scatter([1, 2], [3, 4])
ax1.set_xlim([0, 5])
ax1.set_ylim([0, 5])
ax2 = plt.subplot(132)
ax2.scatter([1, 2],[3, 4])
ax2.set_xlim([0, 5])
ax2.set_ylim([0, 5])
そして、あなたが望むだけの数の軸についても同様です。
もっといいのは、すべてをループにまとめることです。
import matplotlib.pyplot as plt
DATA_x = ([1, 2],
[2, 3],
[3, 4])
DATA_y = DATA_x[::-1]
XLIMS = [[0, 10]] * 3
YLIMS = [[0, 10]] * 3
for j, (x, y, xlim, ylim) in enumerate(Zip(DATA_x, DATA_y, XLIMS, YLIMS)):
ax = plt.subplot(1, 3, j + 1)
ax.scatter(x, y)
ax.set_xlim(xlim)
ax.set_ylim(ylim)