Wypełnij dwie pionowe linie w matplotlib


101

Przejrzałem przykłady w matplotlibdokumentacji, ale nie było dla mnie jasne, w jaki sposób mogę zrobić wykres wypełniający obszar między dwiema określonymi pionowymi liniami.

Na przykład, powiedzmy, że chcę utworzyć wykres od x=0.2do x=4(dla pełnego yzakresu wykresu). Powinienem użyć fill_between, fillczy fill_betweenx?

Czy mogę użyć wheredo tego warunku?

Odpowiedzi:


206

Wygląda na to, że chcesz axvspan, a nie jedna z wypełnień między funkcjami. Różnica polega na tym, że axvspan(i axhspan) wypełni cały y (lub x) zakres wykresu, niezależnie od tego, jak powiększysz.

Na przykład użyjmy, axvspanaby podświetlić obszar x między 8 a 14:

import matplotlib.pyplot as plt

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

plt.show()

wprowadź opis obrazu tutaj

Można by fill_betweenxto zrobić, ale zakresy (x i y) prostokąta byłyby we współrzędnych danych . W axvspanprzypadku zakresy y prostokąta domyślnie wynoszą 0 i 1 i są podane we współrzędnych osi (innymi słowy, w procentach wysokości wykresu).

Aby to zilustrować, ustawmy prostokąt rozciągający się od 10% do 90% wysokości (zamiast zajmować cały zakres). Spróbuj powiększyć lub przesuwać i zwróć uwagę, że zakresy y oznaczają stałe w obszarze wyświetlania, podczas gdy zakresy x przesuwają się wraz z powiększeniem / przesuwaniem:

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

wprowadź opis obrazu tutaj


4
osoby, które są zainteresowane rozwiązaniem, które można zastosować fill_betweendla bardziej "falujących", pionowych linii, transform
zerknij
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.