Python-Matplotlib auf ganzzahlige Tick-Positionen beschränken [duplizieren]

Diese Frage hat hier bereits eine Antwort:

Wie erzwinge ich, dass die Y-Achse in Matplotlib nur Ganzzahlen verwendet? 3 Antworten

Sehr oft möchte ich ein Balkendiagramm erstellen. Wenn die Anzahl niedrig ist, erhalte ich oft Haupt- und / oder Neben-Tick-Positionen, die keine ganzen Zahlen sind. Wie kann ich das verhindern? Es macht keinen Sinn, ein Häkchen bei 1,5 zu setzen, wenn die Daten gezählt werden.

Dies ist mein erster Versuch:

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))

Das funktioniert gut, wenn die Zählimpulse klein sind, aber wenn sie groß sind, bekomme ich viele, viele kleine Zecken:

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))

Wie kann ich aus dem ersten Beispiel mit kleinen Zahlen das gewünschte Verhalten erzielen und gleichzeitig vermeiden, was im zweiten passiert?

Antworten auf die Frage(3)

Ihre Antwort auf die Frage