水平と垂直の線を指定された範囲で作成できない理由がよくわかりません。この箱でデータを縛りたいのですが。しかし、側面は私の指示に準拠していないようです。どうしてこれなの?
# CREATING A BOUNDING BOX
# BOTTOM HORIZONTAL
plt.axhline(y=.4, xmin=0.25, xmax=0.402, linewidth=2, color = 'k')
# RIGHT VERTICAL
plt.axvline(x=0.402, ymin=0.4, ymax = 0.615, linewidth=2, color='k')
# LEFT VERTICAL
plt.axvline(x=0.1, ymin=0.58, ymax = 0.79, linewidth=2, color='k')
plt.show()
呼び出しているpyplot関数、 axhline()
と axvline()
は座標に関係なく、軸範囲の一部にまたがる線を描画します。パラメータxmin
またはymin
は、軸の最小値として0.0を、軸の最大値として1.0を使用します。
代わりに、plt.plot((x1, x2), (y1, y2), 'k-')
を使用して、点(x1、y1)から点(x2、y2)まで色kで線を引きます。 pyplot.plot
を参照してください。
バウンディングボックスを追加したい場合は、長方形を使用してください。
ax = plt.gca()
r = matplotlib.patches.Rectangle((.5, .5), .25, .1, fill=False)
ax.add_artist(r)
これはおそらくMatplotlibの新しいユーザが垂直線と水平線を引くための共通の問題です。この問題を理解するためには、 Matplotlibには異なる座標系が存在します を知っておく必要があります。
メソッド axhline および axvline は、軸座標に線を引くために使用されます。この座標系では、プロットのデータ範囲に関係なく、左下の座標は(0,0)、右上の座標は(1,1)です。パラメータxmin
とxmax
はどちらも[0,1]の範囲内です。
一方、メソッド hlines および vlines は、データ座標に線を描画するために使用されます 。 xmin
およびxmax
の範囲は、x軸のデータ制限の範囲内です。
具体例を見てみましょう。
import matplotlib.pyplot as plt
import numpy as np
x = np.linspace(0, 5, 100)
y = np.sin(x)
fig, ax = plt.subplots()
ax.plot(x, y)
ax.axhline(y=0.5, xmin=0.0, xmax=1.0, color='r')
ax.hlines(y=0.6, xmin=0.0, xmax=1.0, color='b')
plt.show()
xmin
およびxmax
の値は、axhline
およびhlines
メソッドの場合と同じです。しかし、生産ラインの長さは異なります。