1. ホーム
  2. python

[解決済み] matplotlibで2つの垂直線の間を埋める [重複] [重複

2022-06-22 16:22:30

質問

を経由して の例 の中で matplotlib のドキュメントにありますが、2つの特定の垂直線の間の領域を埋めるプロットをどのように作ることができるのか、私には明確ではありませんでした。

例えば、以下のようなプロットを作成したいとします。 x=0.2x=4 (完全な y の範囲)。私は fill_between , fill または fill_betweenx ?

を使用することはできますか? where の条件は使えますか?

どのように解決するのですか?

それはあなたがしたいように聞こえる axvspan を使いたいようですが、fill between関数の1つではありません。その違いは axvspan axhspan は、ズームに関係なく、プロットの全体のy(またはx)範囲を埋めます。

例えば axvspan を使って、8と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()

<イグ