Molto spesso desidero creare un grafico a barre di conteggi. Se i conteggi sono bassi, spesso ottengo posizioni di tick maggiori e/o secondarie che non sono numeri interi. Come posso evitare questo? Non ha senso avere un segno di spunta a 1.5 quando i dati sono importanti.Python matplotlib limitano le posizioni dei segni di spunta di numero intero
Questo è il mio primo tentativo:
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))
che funziona bene quando i conti sono piccole, ma quando sono grandi, ottengo molte molte zecche minori:
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))
Come posso ottenere il comportamento desiderato dal primo esempio con piccoli conteggi evitando ciò che accade nel secondo?
Questo è contrassegnato erroneamente come duplicato. È stato chiesto prima dell'altra domanda. L'altra domanda dovrebbe essere quella contrassegnata come duplicata. – John