Se muestran las marcas menores con solo las tags principales.

Me gustaría tener marcas menores en un eje pero mostrar solo las tags de marcas principales. Por ejemplo, las marcas menores son [19, 20, 21, … 40, 41] y las tags principales son [20, 25, 30, 35, 40]. ¿Cómo puedo hacerlo? el código de abajo no hizo el trabajo. Sé que uno podría usar MultipleLocator, FormatStrFormatter como este ejemplo . Sin embargo, mis valores en el eje son un poco “extraños”, ya que el valor inicial es 19 (no 20) y el valor final es 41, lo que causa dificultades al usar MultipleLocator.

import numpy as np from matplotlib import pylab as plt fig = plt.figure() ax = fig.add_subplot(111) x = np.linspace(19.,41,23) y = x**2 ax.plot(x,y) ax.set_xticks(x) ax.set_xticklabels(x, minor=False) plt.show() 

me da la siguiente ttwig: introduzca la descripción de la imagen aquí

o ax.set_xticklabels([20, 25, 30, 35, 40], minor=False) dame otra ttwig: introduzca la descripción de la imagen aquí ¿Cómo puedo cambiar mi código para obtener lo que necesito? ¡Muchas gracias por tu ayuda!

Realmente no entiendo por qué es difícil usar MultipleLocator en tu ejemplo.

Añadiendo estas lineas en tu codigo.

 from matplotlib.ticker import MultipleLocator, FormatStrFormatter majorLocator = MultipleLocator(5) majorFormatter = FormatStrFormatter('%d') minorLocator = MultipleLocator(1) ax.xaxis.set_major_locator(majorLocator) ax.xaxis.set_major_formatter(majorFormatter) ax.xaxis.set_minor_locator(minorLocator) 

Obtendrás esta imagen, que entendí que es lo que quieres (¿no es así?): introduzca la descripción de la imagen aquí


En caso de que no desee que las marcas aparezcan debajo de su rango de datos, defina sus FixedLocator manualmente usando el FixedLocator :

 from matplotlib.ticker import FixedLocator majorLocator = FixedLocator(np.linspace(20,40,5)) minorLocator = FixedLocator(np.linspace(19,41,23)) 

Y obtendrás esta imagen: introduzca la descripción de la imagen aquí