Riempi tra due linee verticali in matplotlib


95

Ho esaminato gli esempi nella matplotlibdocumentazione, ma non mi è stato chiaro come realizzare una trama che riempia l'area tra due specifiche linee verticali.

Ad esempio, diciamo che voglio creare un grafico tra x=0.2e x=4(per l'intero yintervallo del grafico). Dovrei usare fill_between, fillo fill_betweenx?

Posso usare la wherecondizione per questo?

Risposte:


191

Sembra che tu voglia axvspan, piuttosto che uno dei riempimenti tra le funzioni. La differenza è che axvspan(e axhspan) riempirà l'intera estensione y (o x) del grafico indipendentemente da come si ingrandisce.

Ad esempio, usiamo axvspanper evidenziare la regione x tra 8 e 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()

inserisci qui la descrizione dell'immagine

Potresti usare fill_betweenxper farlo, ma le estensioni (sia x che y) del rettangolo sarebbero in coordinate di dati . Con axvspan, le estensioni y del rettangolo sono impostate di default su 0 e 1 e sono in coordinate degli assi (in altre parole, percentuali dell'altezza del grafico).

Per illustrare ciò, facciamo in modo che il rettangolo si estenda dal 10% al 90% dell'altezza (invece di occupare l'intera estensione). Prova a eseguire lo zoom o la panoramica e nota che le estensioni y dicono fisse nello spazio di visualizzazione, mentre le estensioni x si spostano con lo zoom / panoramica:

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

inserisci qui la descrizione dell'immagine


3
le persone interessate a una soluzione da utilizzare fill_betweenper linee verticali più "sinuose", danno un'occhiata al filetransform
danno
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.