J'ai trop de graduations sur mon graphique et elles se rencontrent.
Comment puis-je réduire le nombre de ticks?
Par exemple, j'ai des tiques:
1E-6, 1E-5, 1E-4, ... 1E6, 1E7
Et je veux seulement:
1E-5, 1E-3, ... 1E5, 1E7
J'ai essayé de jouer avec le LogLocator
, mais je n'ai pas été en mesure de comprendre cela.
python
matplotlib
jlconlin
la source
la source
pyplot.locator_params(axis = 'x', nbins = 4)
(ouaxis = 'y'
) rendre le processus vraiment simple. Merci @bgamari!numticks
au lieu denbins
numticks
solution pour les graphiques logarithmiques comme indiqué par @meduz?[0, 1, ..., 99]
et maintenant on fixenticks=10
, alors les nouvelles étiquettes clairsemées seront placées dix fois plus longtemps espacées le long de l'axe, c'est-à-dire maintenant se1
trouveront où9
était,2
où19
était ... et9
où99
était.Si quelqu'un obtient toujours cette page dans les résultats de recherche:
la source
Pour résoudre le problème de la personnalisation et de l'apparence des tiques, consultez le guide des localisateurs de tiques sur le site matplotlib
ax.xaxis.set_major_locator(plt.MaxNLocator(3))
Définirait le nombre total de graduations dans l'axe des x sur 3 et le répartirait uniformément sur l'axe.
Il y a aussi joli tutoriel à ce sujet
la source
ax = df.plot()
pandas.DataFrame
) avec un index datetime [2019-01-01, ... 2019-11-01], appelezax = df.plot()
, retournez un objet figure. appelax.xaxis.set_major_locator(plt.MaxNLocator(3))
uniquement afficher les 3 premiers index [2019-01-01, 2019-01-02, 2019-01-03].df.plot()
affiche souvent leminor_locator
, donc vous voudrez peut-être essayerax1.xaxis.set_minor_locator(plt.MaxNLocator(3))
. N'oubliez pas de remplacer le3
nombre de graduations que vous souhaitez afficher. Pour les séries chronologiques de pandas que je recommandeimport matplotlib.dates as mdates
et que je coursax.xaxis.set_minor_locator(mdates.MonthLocator(interval = 1))
avecax.xaxis.set_minor_formatter(mdates.DateFormatter('%m-%Y'))
Il existe une
set_ticks()
fonction pour les objets d'axe.la source
get_xticks()
ou d'get_yticks()
abord pour l'objet axes, modifier si nécessaire, puis renvoyer la liste àset_ticks()
.set_ticks()
, mais j'aiset_xticks()
etset_yticks()
. Ce sont des attributs d'objets axes, pas d'axes. Peut-être que cela a changé au cours des deux dernières années.au cas où quelqu'un en aurait encore besoin, et comme rien ici n'a vraiment fonctionné pour moi, j'ai trouvé un moyen très simple qui garde l'apparence du tracé généré "tel quel" tout en fixant le nombre de graduations à exactement N:
la source
ax.set_yticks(np.linspace(int(ymin), int(ymax), N), 2)
La solution fournie par @raphael est simple et très utile.
Néanmoins, les étiquettes de graduation affichées ne seront pas des valeurs échantillonnées à partir de la distribution d'origine mais à partir des index du tableau renvoyés par
np.linspace(ymin, ymax, N)
.Pour afficher N valeurs régulièrement espacées de vos étiquettes de graduation d'origine, utilisez la
set_yticklabels()
méthode. Voici un extrait de code pour l'axe y, avec des étiquettes entières:la source
Lorsqu'une échelle logarithmique est utilisée, le nombre de graduations principales peut être fixé avec la commande suivante
La valeur définie sur
numticks
détermine le nombre de graduations d'axe à afficher.Crédits à la publication de @ bgamari pour l'introduction de la
locator_params()
fonction, mais lenticks
paramètre renvoie une erreur lorsqu'une échelle logarithmique est utilisée.la source