pyplot matrices graficos graficas graficar matplotlib legend labels colorbar

matrices - matplotlib: barras de color y sus etiquetas de texto



python graficos 2d (1)

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.get_yaxis().set_ticks([]) for j, lab in enumerate([''$0$'',''$1$'',''$2$'',''$>3$'']): cbar.ax.text(.5, (2 * j + 1) / 8.0, lab, ha=''center'', va=''center'') cbar.ax.get_yaxis().labelpad = 15 cbar.ax.set_ylabel(''# 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() #labels column_labels = list(''ABCD'') row_labels = list(''WXYZ'') ax.set_xticklabels(column_labels, minor=False) ax.set_yticklabels(row_labels, minor=False) plt.show()

Estabas muy cerca. Una vez que tenga una referencia al eje de la barra de color, puede hacer lo que quiera, incluso colocar etiquetas de texto en el medio. Es posible que desee jugar con el formato para hacerlo más visible.

Me gustaría crear una leyenda de barra de colores para un mapa de calor, de modo que las etiquetas estén en el centro de cada color discreto. Por favor, mira el siguiente ejemplo ( tomado de aquí )

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()

que genera la siguiente gráfica:

Idealmente, me gustaría generar una barra de leyenda que tenga los cuatro colores y para cada color, una etiqueta en su centro: 0,1,2,3,> 4