cadenas de matplotlib como tags en el eje x

Estoy construyendo una pequeña herramienta para el análisis de datos y he llegado al punto en el que tengo que trazar los datos preparados. El código anterior produce las siguientes dos listas con la misma longitud.

t11 = ['00', '01', '02', '03', '04', '05', '10', '11', '12', '13', '14', '15', '20', '21', '22', '23', '24', '25', '30', '31', '32', '33', '34', '35', '40', '41', '42', '43', '44', '45', '50', '51', '52', '53', '54', '55'] t12 = [173, 135, 141, 148, 140, 149, 152, 178, 135, 96, 109, 164, 137, 152, 172, 149, 93, 78, 116, 81, 149, 202, 172, 99, 134, 85, 104, 172, 177, 150, 130, 131, 111, 99, 143, 194] 

Basado en esto, quiero construir un histogtwig con matplotlib.plt.hist. Sin embargo, hay un par de problemas: 1. t11 [x] y t12 [x] están conectados para todo x. Donde t11 [x] es en realidad una cadena. Representa una cierta combinación de detectores. Por ejemplo: ’01’ dice que la detección se realizó en el segmento 0 del primer detector y en el primer segmento del segundo detector. Mi objective es tener cada entrada de t11 como un punto etiquetado en el eje x. La entrada t12 va a definir la altura de la barra sobre la entrada t11 (en un eje y logarítmico)

¿Cómo se configura uno tal eje x? 2. Esto es todo muy nuevo para mí. No pude encontrar nada relacionado en la documentación. Probablemente porque no sabía qué buscar. SO: ¿Hay un nombre “oficial” para lo que estoy tratando de lograr? Esto también me ayudaría mucho.

Use el comando xticks .

 import matplotlib.pyplot as plt t11 = ['00', '01', '02', '03', '04', '05', '10', '11', '12', '13', '14', '15', '20', '21', '22', '23', '24', '25', '30', '31', '32', '33', '34', '35', '40', '41', '42', '43', '44', '45', '50', '51', '52', '53', '54', '55'] t12 = [173, 135, 141, 148, 140, 149, 152, 178, 135, 96, 109, 164, 137, 152, 172, 149, 93, 78, 116, 81, 149, 202, 172, 99, 134, 85, 104, 172, 177, 150, 130, 131, 111, 99, 143, 194] plt.bar(range(len(t12)), t12, align='center') plt.xticks(range(len(t12)), t11, size='small') plt.show() 

Para la API orientada a objetos de matplotlib, se puede trazar texto personalizado en los x-ticks de un axis con el siguiente código:

 x = np.arange(2,10,2) y = x.copy() x_ticks_labels = ['jan','feb','mar','apr','may'] fig, ax = plt.subplots(1,1) ax.plot(x,y) # Set number of ticks for x-axis ax.set_xticks(x) # Set ticks labels for x-axis ax.set_xticklabels(x_ticks_labels, rotation='vertical', fontsize=18) 

enter image description here

En matplotlib lingo, está buscando una forma de establecer ticks personalizados.

Parece que no puedes lograr esto con el pyplot.hist directo pyplot.hist . Necesitarás construir tu imagen paso a paso en su lugar. Ya hay una respuesta aquí en Stack Overflow para preguntar cuál es muy similar a la tuya y debe comenzar: Matplotlib – etiqueta cada contenedor

En primer lugar, debe acceder al objeto del eje:

 fig, ax = plt.subplots(1,1) 

entonces:

 ax.set_yticks([x for x in range(-10,11)]) ax.set_yticklabels( ['{0:2d}'.format(abs(x)) for x in range(-10, 11)])