2016-08-02 18 views
0

Ich habe eine große Matrix der Größe 500 x 18904.Python: Plot Heatmap für große Matrix

Da die meisten Werte sind Nullen, ich bin das Muster nicht in der Lage, klar zu visualisieren, da die Nullen in denen dominieren Farbbalken.

Um die Daten genauer zu betrachten, muss ich für verschiedene Segmente des Bildes heranzoomen. Gibt es eine zuverlässige Möglichkeit, diese Daten mit der Farbleiste zu visualisieren?

Hier ist mein Code und Ausgabe.

import numpy as np 
import matplotlib.pyplot as plt 
import scipy.io as sio 
j = sio.loadmat('UV_matrix.mat') 
k = j['UV'] 
plt.imshow(k, aspect='auto') 
plt.show() 

Der Ausgang enter image description here

+0

Können Sie Nullwerte ignorieren und normalisieren, indem Sie den Mindestwert außer 0 verwenden? – Pedro

+0

Versuchen Histogrammausgleich: http://scikit-image.org/docs/dev/auto_examples/plot_equalize.html –

+0

ignoriert die Null. Ich kann nur kleine schwarze Punkte sehen. – Rangooski

Antwort

4

I unter Verwendung numpy Arrays von zwei Möglichkeiten denken.

  1. Angenommen, Ihre Daten sind meist höher als Null, aber es gibt eine Menge von Nullen .:

    vmin = some_value_higher_than_zero 
    plt.matshow(k,aspect='auto',vmin=vmin) 
    
  2. Einstellung Nullen zu NaNs. Sie werden automatisch weggelassen.

    k[k==0.0]=np.nan 
    plt.matshow(k,aspect='auto') 
    

NB. Imshow und Mattshow arbeiten beide hier.

Eine andere Option, wenn Ihre Matrix wirklich spärlich ist, ist die Verwendung von Streudiagrammen.

x,y = k.nonzero() 
plt.scatter(x,y,s=100,c=k[x,y]) #color as the values in k matrix