matplotlibの2つの垂直線の間を塗りつぶす


95

ドキュメントのmatplotlib調べましたが、2つの特定の垂直線の間の領域を埋めるプロットを作成する方法がわかりませんでした。

例えば、私は間のプロット作成したいと言うx=0.2x=4(フルのためのyプロットの範囲を)。使用すべきかfill_betweenfillそれともfill_betweenx

whereこの条件を使用できますか?

回答:


191

それはあなたが望んaxvspanでいるように聞こえますが、関数間のフィルの1つではありません。違いは、axvspan(およびaxhspan)は、ズームの方法に関係なく、プロットのy(またはx)範囲全体を埋めることです。

たとえば、8〜14のaxvspanx領域を強調表示するために使用します。

import matplotlib.pyplot as plt

fig, ax = plt.subplots()
ax.plot(range(20))
ax.axvspan(8, 14, alpha=0.5, color='red')

plt.show()

ここに画像の説明を入力してください

fill_betweenxこれを行うために使用できますが、長方形の範囲(xとyの両方)はデータ座標になります。を使用するaxvspanと、長方形のy範囲はデフォルトで0と1になり、座標軸(つまり、プロットの高さのパーセンテージ)になります。

これを説明するために、長方形を高さの10%から90%に拡張します(全範囲を占めるのではなく)。ズームまたはパンを試してみます。y範囲は表示スペースで固定と表示され、x範囲はズーム/パンで移動します。

import matplotlib.pyplot as plt

fig, ax = plt.subplots()
ax.plot(range(20))
ax.axvspan(8, 14, ymin=0.1, ymax=0.9, alpha=0.5, color='red')

plt.show()

ここに画像の説明を入力してください


3
人々使用する溶液中で興味を持っているfill_betweenより多くの「波状」のために、垂直線、見ていtransformたパラメータ(およびこの回答を
ミスターTsjolder
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.