2012-04-11 12 views
8

Sto graficando i dati da una matrice numpy usando matplotlib imshow. Tuttavia, alcuni punti non contengono dati. Ho inizializzato l'array usando np.zeroes, quindi questi punti stanno trascinando verso il basso l'intera mappa. So che nessuno dei dati avrà mai un valore di 0.0. C'è un modo per me di dire alla routine imshow di ignorare questi punti (cioè lasciarli bianchi, quindi è chiaro che sono vuoti)?Punti di impostazione senza dati in bianco con Matplotlib imshow

+0

Hai due buone risposte; considera di selezionare uno come corretto. Ho combinato le due risposte per raggiungere il mio obiettivo. Erano entrambi molto più facili di definire una cmap. – physicsmichael

risposta

10

Hai provato a istanziare l'array con NaNs anziché zeri per vedere se l'impostazione predefinita di matplotlib ignorerà i NaN in un modo che funzioni per te? Si potrebbe anche provare semplicemente utilizzando l'indicizzazione logica per rendere le posizioni di 0 pari a NaN a destra prima di tracciare:

my_data[my_data == 0.0] = numpy.nan 

In alternativa, è possibile utilizzare l'idea Nan e follow this link's advice e utilizzare NumPy mascherato matrici al fine di tracciare le voci NaN come colore preferisci.

Penso che potresti anche usare l'idea di quel collegamento per creare un array mascherato anche nelle posizioni zero, senza passare all'opzione NaN se non ti piace.

3

Applica l'array con Python None per i punti che non devono essere visualizzati.

y_series_1 = [1,None,None,4,5] 
y_series_2 = [1,2,5,6,7] 

Per questo esempio, la linea y_series_1 scomparirà dall'asse X al secondo e al terzo punto. Il risultato sono interruzioni di riga (la riga inizia, scompare, quindi continua al quarto punto), che credo sia il comportamento che stai cercando.

Problemi correlati