2本の縦線の間を塗りつぶす [重複] 質問する

2本の縦線の間を塗りつぶす [重複] 質問する

私はドキュメントにはmatplotlib記載されていましたが、特定の 2 本の垂直線の間の領域を塗りつぶすプロットを作成する方法がわかりませんでした。

たとえば、x=0.2との間(プロットのx=4全範囲)のプロットを作成したいとします。 、 、 のどれを使用すればよいのでしょうか。yfill_betweenfillfill_betweenx

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

ベストアンサー1

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

たとえば、axvspan8 と 14 の間の x 領域を強調表示するには、次のようにします。

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()

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

おすすめ記事