複数のサブプロットを持つ Pyplot を使用して、Python でプロットを作成しました。
どのプロットにもない線を引きたいと思います。プロットの一部である線を引く方法は知っていますが、プロット間の空白に線を引く方法がわかりません。
ありがとうございました。
リンクをありがとうございますが、プロット間に垂直線は必要ありません。実際には、特定の範囲を示すために、プロットの 1 つの上にある水平線です。図形の上に任意の線を引く方法はありませんか?
複数のサブプロットを持つ Pyplot を使用して、Python でプロットを作成しました。
どのプロットにもない線を引きたいと思います。プロットの一部である線を引く方法は知っていますが、プロット間の空白に線を引く方法がわかりません。
ありがとうございました。
リンクをありがとうございますが、プロット間に垂直線は必要ありません。実際には、特定の範囲を示すために、プロットの 1 つの上にある水平線です。図形の上に任意の線を引く方法はありませんか?
まず、これを行う簡単な方法はaxvspan
、1 より大きい y 座標で使用する jut とclip_on=False
です。ただし、線ではなく長方形を描画します。
簡単な例として:
import matplotlib.pyplot as plt
fig, ax = plt.subplots()
ax.plot(range(10))
ax.axvspan(2, 4, 1.05, 1.1, clip_on=False)
plt.show()
transform
線を描画するには、kwarg として使用する を指定するだけですplot
(実際には、他のほとんどのプロット コマンドにも同じことが当てはまります)。
「軸」座標 (例: 0,0 は軸の左下、1,1 は右上) でtransform=ax.transAxes
描画するには、 と を使用して Figure 座標 (例: 0,0 は Figure ウィンドウの左下) で描画します、1,1 は右上) を使用しますtransform=fig.transFigure
。
@tcaswell が述べannotate
たように、これはテキストの配置を少し簡単にし、注釈、矢印、ラベルなどに非常に役立ちます。注釈を付けてこれを行うことができます (ポイントと空白文字列の間に線を引くことによって)。線を引きたいだけなら、そうしない方が簡単です。
ただし、やりたいことのように聞こえることについては、少し違うことをしたいかもしれません。
x 座標が 1 つの変換を使用し、y 座標が別の変換を使用する変換を簡単に作成できます。これが舞台裏axhspan
で行われていることです。axvspan
y 座標が軸座標に固定され、x 座標がデータ座標の特定の位置を反映するような、必要なものに非常に便利です。
次の例は、軸座標で描画することと、代わりに「混合」変換を使用することの違いを示しています。両方のサブプロットをパン/ズームしてみて、何が起こるかを確認してください。
import matplotlib.pyplot as plt
from matplotlib.transforms import blended_transform_factory
fig, (ax1, ax2) = plt.subplots(nrows=2)
# Plot a line starting at 30% of the width of the axes and ending at
# 70% of the width, placed 10% above the top of the axes.
ax1.plot([0.3, 0.7], [1.1, 1.1], transform=ax1.transAxes, clip_on=False)
# Now, we'll plot a line where the x-coordinates are in "data" coords and the
# y-coordinates are in "axes" coords.
# Try panning/zooming this plot and compare to what happens to the first plot.
trans = blended_transform_factory(ax2.transData, ax2.transAxes)
ax2.plot([0.3, 0.7], [1.1, 1.1], transform=trans, clip_on=False)
# Reset the limits of the second plot for easier comparison
ax2.axis([0, 1, 0, 1])
plt.show()
下のプロット (「混合」変換を使用) では、線はデータ座標にあり、新しい座標軸の範囲で移動しますが、上の線は座標軸にあり、固定されたままです。