2015-07-03 13 views
9

Sto provando a tracciare una matrice con 2000 colonne e 200000 righe. Posso testare trama e testare esportare figura matrice bene quando la matrice è piccola usandoTrama Python Grande matrice usando matplotlib

matshow(my_matrix) 
show() 

Tuttavia, quando vengono aggiunti più righe my_matrix, la figura diventa molto stretta in quanto vi sono modo più righe che colonne, perdendo così la precisione quando si esegue lo zoom. Posso rendere scorrevole la matrice delle figure? In caso contrario, come posso visualizzare tale matrice senza perdere precisione?

Ho anche provato a chiamare savefig ('filename', dpi = 300) per salvare l'immagine senza perdere troppa precisione, ma genera MemoryError quando la matrice è grande. Grazie molto!

+2

Forse troppo semplice per le tue esigenze, ma hai provato a suddividere la tua matrice grande in parti e poi chiamare matshow su ognuna di quelle? – lesnikow

+7

'ax.set_aspect ('auto')' risolverà il problema dell'aspetto, ma i pixel saranno rettangoli e non quadrati. Ho fatto cose con 2k x 150k, ma sta iniziando a spingere i limiti di ciò che può fare mpl (ci sono alcuni numeri interi a 32 bit codificati nel codice di rasterizzazione C++). – tacaswell

+0

@tcaswell matshow() restituisce un'AxesImage. Credo che la funzione set_aspect() sia accessibile solo all'oggetto Axes. Non so come ottenere l'oggetto Axes da AxesImage. – emily

risposta

1

Ho finito per prendere una combinazione di suggerimenti @tcaswell e @ lesnikow.

Get assi attuali per impostare correttamente le proporzioni auto, ho anche dividere la matrice in matrici più piccole:

import matplotlib.pylab as plt 

    for j in range(lower_bound_on_rows, upper_bound_on_rows): nums.append(j) 
    partial_matrix = my_matrix[nums, :] 

    plt.matshow(partial_matrix, fignum=100) 
    plt.gca().set_aspect('auto') 
    plt.savefig('filename.png', dpi=600) 

mio matrice è lunga verticalmente, così tranciato da righe e conservato tutte le colonne nella più piccola matrici. Se la tua matrice è lunga orizzontalmente, capovolgi l'indice come questo my_matrix [:, nums]

Problemi correlati