Vorrei creare una legenda della barra di colore per una mappa termica, in modo che le etichette si trovino al centro di ciascun colore discreto. Si prega di vedere l'esempio qui sotto (borrowed from here)matplotlib: barre dei colori e le relative etichette di testo
import matplotlib.pyplot as plt
import numpy as np
from matplotlib.colors import ListedColormap
#discrete color scheme
cMap = ListedColormap(['white', 'green', 'blue','red'])
#data
np.random.seed(42)
data = np.random.rand(4, 4)
fig, ax = plt.subplots()
heatmap = ax.pcolor(data, cmap=cMap)
#legend
cbar = plt.colorbar(heatmap)
cbar.ax.set_yticklabels(['0','1','2','>3'])
cbar.set_label('# of contacts', rotation=270)
# put the major ticks at the middle of each cell
ax.set_xticks(np.arange(data.shape[1]) + 0.5, minor=False)
ax.set_yticks(np.arange(data.shape[0]) + 0.5, minor=False)
ax.invert_yaxis()
#lebels
column_labels = list('ABCD')
row_labels = list('WXYZ')
ax.set_xticklabels(column_labels, minor=False)
ax.set_yticklabels(row_labels, minor=False)
plt.show()
che genera il seguente grafico:
Idealmente mi piacerebbe per generare un bar leggenda che ha i quattro colori e per ogni colore, un'etichetta il suo centro: 0,1,2,3,> 4
grazie! davvero apprezzato. – dimka
Ho provato questo e funziona quasi. Per qualche motivo il nome dell'etichetta dell'asse "numero di contatti" è scomparso a causa della linea "cbar.ax.axis ('off')". un modo per mantenere l'etichetta? – dimka
@dimka vedere le modifiche, basta cambiare i tick in modo leggermente diverso. Devi ancora modificare i caratteri per avere un aspetto migliore, ma lo lascio come esercizio per il lettore;) – tacaswell