2013-03-23 17 views
10

Sto cercando un modo per utilizzare fill_between in matplotlib per ombreggiare tra x1 e x2 invece di y1 e y2.Riempimento tra x e posizione x di riferimento in Matplotlib

Ho una serie di grafici di registro, con profondità sull'asse Y e la variabile misurata sull'asse x e vorrei ombreggiare a sinistra oa destra, al contrario di sopra o sotto, della linea tracciata.

Sono sicuro che questo dovrebbe essere possibile con fill_between, ma non posso farlo funzionare.

Per fare un esempio:

import numpy as np 
import matplotlib.pyplot as plt 
import matplotlib.gridspec as gridspec 


gs = gridspec.GridSpec(3, 3) 
ax1 = plt.subplot(gs[0, :]) 
ax2 = plt.subplot(gs[1:, 1]) 

y=np.random.uniform(0,1,30) 
x=np.arange(30) 

ax1.set_ylabel('Plot 1') 
ax1.plot(x,y) 
ax1.fill_between(x,y,0.5,where=y>0.5,interpolate=True) 

ax2.set_ylabel('Plot 2') 
ax2.plot(y,x) 
ax2.set_ylim(30,0) 

plt.show() 

Ho allegato un'immagine di ciò che questo produce: In sostanza voglio tracciare qualcosa come plot 1 in posizione di trama 2 enter image description here

Grazie per eventuali suggerimenti

risposta

16

è possibile utilizzare fill_betweenx

ax2.fill_betweenx(y,x, x2=0.5, where=x>0.5,interpolate=True) 
+0

Ahh .. non sapevo che ci fosse un fill_betweenx - Grazie – user1665220

+1

Nota: fill_betweenx non accetta la parola chiave interpolate. –

+0

Conosci un modo per farlo senza usare fill_betweenx()? Ho davvero bisogno della parola chiave interpolate, e sembra che non sia inclusa in fill_betweenx() fino a matplotlib 2.1. – melicent

Problemi correlati