¿Cómo forzar el eje Y para usar solo enteros en Matplotlib?

Estoy trazando un histogtwig usando el módulo matplotlib.pyplot y me pregunto cómo puedo forzar que las tags del eje y muestren solo números enteros (por ejemplo, 0, 1, 2, 3, etc.) y no decimales (por ejemplo, 0., 0.5). , 1., 1.5, 2. etc.).

Estoy mirando las notas de orientación y sospecho que la respuesta está en algún lugar alrededor de matplotlib.pyplot.ylim pero hasta ahora solo puedo encontrar cosas que establecen los valores mínimo y máximo del eje y.

def doMakeChart(item, x): if len(x)==1: return filename = "C:\Users\me\maxbyte3\charts\\" bins=logspace(0.1, 10, 100) plt.hist(x, bins=bins, facecolor='green', alpha=0.75) plt.gca().set_xscale("log") plt.xlabel('Size (Bytes)') plt.ylabel('Count') plt.suptitle(r'Normal Distribution for Set of Files') plt.title('Reference PUID: %s' % item) plt.grid(True) plt.savefig(filename + item + '.png') plt.clf() 

Si tienes los datos de y

 y = [0., 0.5, 1., 1.5, 2., 2.5] 

Puede usar los valores máximo y mínimo de estos datos para crear una lista de números naturales en este rango. Por ejemplo,

 import math print range(math.floor(min(y)), math.ceil(max(y))+1) 

rendimientos

 [0, 1, 2, 3] 

A continuación, puede establecer las ubicaciones de marca de verificación y (y las tags) mediante matplotlib.pyplot.yticks :

 yint = range(min(y), math.ceil(max(y))+1) matplotlib.pyplot.yticks(yint) 

Aquí hay otra manera:

 from matplotlib.ticker import MaxNLocator ax = plt.figure().gca() ax.yaxis.set_major_locator(MaxNLocator(integer=True)) 

esto funciona para mi

 import matplotlib.pyplot as plt plt.hist(... # make the y ticks integers, not floats yint = [] locs, labels = plt.yticks() for each in locs: yint.append(int(each)) plt.yticks(yint)