2016-03-31 12 views
0

ich auf einem Grundstück arbeite, die so weit wie folgt aussieht:Python Heatmap Grundstück colorbar

enter image description here

Und ich den folgenden Code verwende:

import matplotlib.pyplot as plt 
import numpy as np 
column_labels = ['A','B'] 
row_labels = ['A','B'] 
data = np.random.rand(2,2) 
print(type(data)) 
data = np.array([[1, 0.232], [0.119, 1]]) 
fig, ax = plt.subplots() 
heatmap = ax.pcolor(data, cmap=plt.cm.Blues) 

# put the major ticks at the middle of each cell 
ax.set_xticks(np.arange(data.shape[0])+0.5, minor=False) 
ax.set_yticks(np.arange(data.shape[1])+0.5, minor=False) 

# want a more natural, table-like display 
ax.invert_yaxis() 
ax.xaxis.tick_top() 

ax.set_xticklabels(row_labels, minor=False) 
ax.set_yticklabels(column_labels, minor=False) 
plt.show() 

Was ich zu bekommen versuche ist so etwas wie dieses:

enter image description here

Wo ich den Farbbalken sowie den Wert der Zellen auf ihnen sehen kann. Was müsste ich meinem Code hinzufügen, um diese zu erhalten?

Dank

+0

Etwas relevant für den Text auf Zellen: https://stackoverflow.com/questions/21712047/matplotlib-imshow-matshow-display-values-on-plot/21712361#21712361 – wflynny

+1

Für die Farbleiste, hast du 'fig.colorbar (heatmap)' ausprobiert? – wflynny

Antwort

5

Haben Sie in Seaborn untersucht?

import seaborn as sns 
data = np.random.rand(2,2) 
sns.heatmap(data, annot=True, linewidths=.5) 

enter image description here

+0

Haha ja, es ist eine coole Bibliothek: https://stanford.edu/~mwaskom/software/seaborn/examples/ Sie können es eine Matplotlib-Achse als Arg übergeben und immer noch alle Ihre Matplotlib-Funktionen wie ax.set_xticks () sns.heatmap (Daten, annot = True, Linienbreiten = .5, ax = ax) – Sam

+0

Wie man es in Nicht-Ipython-Umgebung ausführen? – Martian2049

+0

oh, hab 'es. importieren Sie matplotlib.pyplot als plt. plt.show() – Martian2049

3

Für die Farbleiste finden this example. Sie haben richtig geraten, der richtige Funktionsaufruf ist nur ax.colorbar().

In Bezug auf die Werte auf dem pcolor Grundstück, ich fürchte, Sie müssen sie "manuell" mit ax.text() hinzufügen. Berechnen und durchlaufen Sie die Zellenmittelwerte und rufen Sie die Funktion text() auf. Sie können die Schlüsselwortargumente horizontalalignment='center' und verticalalignment='center' verwenden, um den Textwert um x, y zentriert zu halten.