matrices graficos grafico graficas graficar coordenadas barras python matplotlib axis-labels

python - graficos - ¿Cómo forzar al eje Y para que solo use números enteros en Matplotlib?



matplotlib python 3 (3)

Aquí hay otra manera:

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

Estoy trazando un histograma usando el módulo matplotlib.pyplot y me pregunto cómo puedo forzar a las etiquetas del eje y para que solo muestren 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 establezcan 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 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 configurar las y las ubicaciones de marca (y las etiquetas) usando matplotlib.pyplot.yticks :

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


esto funciona para mí:

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)