Vous pouvez définir explicitement où vous voulez cocher les marques avec plt.xticks
:
plt.xticks(np.arange(min(x), max(x)+1, 1.0))
Par exemple,
import numpy as np
import matplotlib.pyplot as plt
x = [0,5,9,10,15]
y = [0,1,2,3,4]
plt.plot(x,y)
plt.xticks(np.arange(min(x), max(x)+1, 1.0))
plt.show()
( np.arange
a été utilisée plutôt que la méthode Python range
juste au cas où min(x)
y max(x)
sont des flottants au lieu d'ints).
El plt.plot
(ou ax.plot
) définira automatiquement la valeur par défaut de la fonction x
y y
limites. Si vous souhaitez conserver ces limites, et simplement modifier la taille des pas des marques de tic-tac, vous pouvez alors utiliser ax.get_xlim()
pour découvrir les limites déjà fixées par Matplotlib.
start, end = ax.get_xlim()
ax.xaxis.set_ticks(np.arange(start, end, stepsize))
Le formateur de tick par défaut devrait faire un travail décent en arrondissant les valeurs de tick à un nombre raisonnable de chiffres significatifs. Cependant, si vous souhaitez avoir plus de contrôle sur le format, vous pouvez définir votre propre formateur. Par exemple,
ax.xaxis.set_major_formatter(ticker.FormatStrFormatter('%0.1f'))
Voici un exemple exécutable :
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.ticker as ticker
x = [0,5,9,10,15]
y = [0,1,2,3,4]
fig, ax = plt.subplots()
ax.plot(x,y)
start, end = ax.get_xlim()
ax.xaxis.set_ticks(np.arange(start, end, 0.712123))
ax.xaxis.set_major_formatter(ticker.FormatStrFormatter('%0.1f'))
plt.show()
13 votes
Bien que ticks soit le mot approprié ici, changer ticks en step size guidera certainement plus de néophytes à cette question.
11 votes
Question étroitement liée : stackoverflow.com/questions/6682784/ et une excellente solution :
pyplot.locator_params(nbins=4)
0 votes
Nbins semble avoir été déprécié dans matplotlib2.x, malheureusement.