2016-06-06 13 views
1

Ich habe eine numpy Matrix fooarray der Größe 138 x 138. Jeder Eintrag in Zeile und Spalte ist ein Wort. Der folgende Code wird verwendet, um eine Heatmap der gleichen Matrix zu erzeugen. Aber ich kann nicht alle Wörter in der Handlung zeigen.Erstellen Heatmap mit Matplotlib

Es scheint, dass die angezeigten Werte auch in der Farbskala falsch sind. Während die Werte in der Matrix zwischen 3,2 und -0,2 liegen, sind die Werte in der Heatmap von 0,1 bis -0,1. Wie zeichne ich eine Heatmap mit einer numpigen Matrix?

fig = plt.figure() 
ax = fig.add_subplot(111) 

cax = ax.matshow(fooarray, interpolation='nearest', cmap='hot') 
fig.colorbar(cax) 

ax.set_xticklabels([' | '] + labels) 
ax.set_yticklabels(['|'] + labels) 

plt.show() 

enter image description here

Antwort

3

Ich habe nicht klar, warum Sie hinzufügen [‘| '] und [' | '] vor den Etiketten, also habe ich es aus dem Code entfernt. Die Farbskala funktioniert bei mir (siehe Code), ich glaube, mit Ihren Daten stimmt etwas nicht.

Der unten stehende Code tickt Positionen mit set_xticks und Labels mit ax.set_xticklabels. Ich fügte eine 90-Grad-Drehung hinzu, aber immer noch schwer lesbare Etiketten mit 138 Ticks.

import numpy as np 
import matplotlib.pyplot as plt 

#create test data: 
s=138 #size of array 
labels=[str(a) for a in range(s)] 
fooarray=np.random.random(s*s).reshape((s,s)) 

#--- original code here: 
fig = plt.figure() 
ax = fig.add_subplot(111) 

cax = ax.matshow(fooarray, interpolation='nearest', cmap='hot') 
fig.colorbar(cax) 
#---- 

#ticks and labels: 
ax.set_xticks(range(len(labels)) , minor=False) 
ax.set_xticklabels(labels) 
ax.set_yticks(range(len(labels)) , minor=False) 
ax.set_yticklabels(labels) 
plt.xticks(rotation=90) 

plt.show()