2014-04-23 14 views
45

Przeszedłem przez examples w dokumentacji matplotlib, ale nie było dla mnie jasne, w jaki sposób mogę wykonać wykres, który wypełnia obszar między dwiema określonymi pionowymi liniami.FIll między dwiema pionowymi liniami w matplotlib

Na przykład, chcę utworzyć wykres między x=0.2 i x=4 (dla pełnego zakresu y wykresu). Czy powinienem używać fill_between, fill lub fill_betweenx?

Czy mogę użyć warunku where?

Odpowiedz

75

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

Na przykład, użyjmy axvspan aby podświetlić X-obszar między 8 i 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() 

enter image description here

Można użyć fill_betweenx to zrobić, ale zakresy (X i Y) prostokąta będzie w współrzędnych danych. Z wartością axvspan, wartości y prostokąta są domyślnie wartościami 0 i 1 i są w współrzędnymi osi (innymi słowy, procentami wysokości wykresu).

Aby to zilustrować, ustawmy prostokąt na 10% do 90% wysokości (zamiast w pełnym zakresie). Spróbuj powiększanie lub panoramowanie, i zauważ, że Y zakresy powiedzieć stałe w przestrzeni ekranu, podczas gdy X-zakresy poruszać się z zoom/pan:

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

enter image description here

+1

ludzie, którzy są zainteresowani w roztworze do wykorzystania 'fill_between' dla bardziej" wiggly ", pionowe linie, spójrz na parametr' transform' (i [ta odpowiedź] (http://stackoverflow.com/a/4891658/4375377)) –

Powiązane problemy