¿Cómo cambiar el espacio entre las garrapatas en matplotlib?

Quiero trazar una gráfica con muchos tics en el eje X usando el siguiente código:

import pylab N = 100 data = pylab.np.linspace(0, N, N) pylab.plot(data) pylab.xticks(range(N)) # add loads of ticks pylab.grid() pylab.tight_layout() pylab.show() pylab.close() 

La ttwig resultante se ve así:

trama

Como puede ver, el eje X es un desastre porque las tags de marca están trazadas con muy poco espacio entre ellas o incluso se superponen .

Me gustaría crear un espacio constante entre cada etiqueta de tick automáticamente, sin importar cuántos ticks haya. Por lo tanto, me gustaría boost el espacio entre tics individuales, aumentando así potencialmente la ‘longitud’ de una ttwig.

Tenga en cuenta que las tags de tick pueden ser cadenas de longitud variable .

Lo que he encontrado hasta ahora es todo sobre el espaciado entre el eje y las tags (que no es lo que quiero), la frecuencia de marcación (que ya puedo hacer) y los parámetros de marcación (que no parecen tener ninguna opción de espaciado).

Puedo cambiar el tamaño de una figura manualmente con matplotlib.pyplot.figure(figsize=(a, b)) , pero eso requeriría conocer el espaciado predeterminado entre las marcas (no hay ninguna, por lo que puedo decir) y la mejor ancho (en pulgadas) de una etiqueta de marca, que no tengo ni idea de cómo medir, por lo que no es una opción, en mi opinión.

¿Qué puedo hacer para boost el espacio entre las garrapatas? Estoy bien con conseguir una imagen bastante larga.

El espacio entre las marcas de verificación se determina exclusivamente por el espacio entre las marcas de los ejes. Por lo tanto, la única forma de obtener más espacio entre las marcas de verificación dadas es agrandar los ejes.

Para determinar el espacio necesario para que las tags no se superpongan, uno puede encontrar la etiqueta más grande y multiplicar su longitud por el número de marcas de verificación. Entonces, uno puede adaptar el margen alrededor de los ejes y establecer el tamaño calculado como un nuevo tamaño de figura.

 import numpy as np import matplotlib.pyplot as plt N = 150 data = np.linspace(0, N, N) plt.plot(data) plt.xticks(range(N)) # add loads of ticks plt.grid() plt.gca().margins(x=0) plt.gcf().canvas.draw() tl = plt.gca().get_xticklabels() maxsize = max([t.get_window_extent().width for t in tl]) m = 0.2 # inch margin s = maxsize/plt.gcf().dpi*N+2*m margin = m/plt.gcf().get_size_inches()[0] plt.gcf().subplots_adjust(left=margin, right=1.-margin) plt.gcf().set_size_inches(s, plt.gcf().get_size_inches()[1]) plt.savefig(__file__+".png") plt.show() 

introduzca la descripción de la imagen aquí

Tenga en cuenta que si la figura que se muestra en la ventana de trazado es más grande que la pantalla, se reducirá de nuevo, por lo que la figura redimensionada solo se mostrará en su nuevo tamaño cuando se guarde. O, uno puede elegir incorporarlo en alguna ventana con barras de desplazamiento como se muestra en esta pregunta: Barra de desplazamiento en la página de visualización de Matplotlib

Podría usar lo siguiente para rotar las tags y hacer que la fuente sea más pequeña:

 ax.set_xticklabels(rotation = (45), fontsize = 10, va='bottom', ha='left')