A menudo, quiero hacer un gráfico de barras de recuentos. Si los recuentos son bajos, a menudo obtengo localizaciones mayores y/o menores que no son enteros. ¿Cómo puedo prevenir esto? No tiene sentido tener un tic en 1.5 cuando los datos son recuentos.matplotlib de Python restringir a ubicaciones de tilde enteras
Este es mi primer intento:
import pylab
pylab.figure()
ax = pylab.subplot(2, 2, 1)
pylab.bar(range(1,4), range(1,4), align='center')
major_tick_locs = ax.yaxis.get_majorticklocs()
if len(major_tick_locs) < 2 or major_tick_locs[1] - major_tick_locs[0] < 1:
ax.yaxis.set_major_locator(pylab.MultipleLocator(1))
minor_tick_locs = ax.yaxis.get_minorticklocs()
if len(minor_tick_locs) < 2 or minor_tick_locs[1] - minor_tick_locs[0] < 1:
ax.yaxis.set_minor_locator(pylab.MultipleLocator(1))
que funciona bien cuando los conteos son pequeñas pero cuando son grandes, consigo muchas marcas menores:
import pylab
ax = pylab.subplot(2, 2, 2)
pylab.bar(range(1,4), range(100,400,100), align='center')
major_tick_locs = ax.yaxis.get_majorticklocs()
if len(major_tick_locs) < 2 or major_tick_locs[1] - major_tick_locs[0] < 1:
ax.yaxis.set_major_locator(pylab.MultipleLocator(1))
minor_tick_locs = ax.yaxis.get_minorticklocs()
if len(minor_tick_locs) < 2 or minor_tick_locs[1] - minor_tick_locs[0] < 1:
ax.yaxis.set_minor_locator(pylab.MultipleLocator(1))
¿Cómo puedo obtener el comportamiento deseado del primer ejemplo con conteos pequeños mientras se evita lo que sucede en el segundo?
Esto está incorrectamente marcado como duplicado. Fue preguntado antes de la otra pregunta. La otra pregunta debe ser la marcada como duplicada. – John