J'ai réussi à augmenter la police de mes ticklabels, mais ils sont maintenant trop proches de l'axe. J'aimerais ajouter un peu d'espace entre les étiquettes et l'axe.
Réponses
Trop de publicités?Si vous ne voulez pas modifier l'espacement de manière globale (en modifiant vos rcParams), et que vous souhaitez une approche plus propre, essayez ceci :
ax.tick_params(axis='both', which='major', pad=15)
ou pour l'axe x seulement
ax.tick_params(axis='x', which='major', pad=15)
ou l'axe y
ax.tick_params(axis='y', which='major', pad=15)
Il semble que matplotlib respecte ces paramètres comme rcParams :
pylab.rcParams['xtick.major.pad']='8'
pylab.rcParams['ytick.major.pad']='8'
Définissez ces avant vous créez des figures et tout devrait bien se passer.
J'ai regardé le code source et il ne semble pas y avoir d'autre moyen de les définir par programme. (tick.set_pad() semble essayer de faire la bonne chose, mais le padding semble être défini lorsque les Ticks sont construits et ne peut plus être modifié après cela).
- Comme pour beaucoup de questions canoniques, celle-ci n'est pas très spécifique et n'a pas d'exemple reproductible, donc voici un exemple pour les étiquettes et le titre des figures.
- Les autres réponses sont excellentes pour
axes
mais il existe d'autres options pour unfigure
qui peuvent tous être positionnés en spécifiant l'optionx=
yy=
paramètre. -
Exemple de Étiquettes des figures : suptitle, supxlabel, supylabel
from matplotlib.cbook import get_sample_data import matplotlib.pyplot as plt import numpy as np
fig, axs = plt.subplots(3, 5, figsize=(8, 5), constrained_layout=True, sharex=True, sharey=True)
fname = get_sample_data('percent_bachelors_degrees_women_usa.csv', asfileobj=False) gender_degree_data = np.genfromtxt(fname, delimiter=',', names=True)
majors = ['Health Professions', 'Public Administration', 'Education', 'Psychology', 'Foreign Languages', 'English', 'Art and Performance', 'Biology', 'Agriculture', 'Business', 'Math and Statistics', 'Architecture', 'Physical Sciences', 'Computer Science', 'Engineering']
for nn, ax in enumerate(axs.flat): ax.set_xlim(1969.5, 2011.1) column = majors[nn] column_recname = column.replace('\n', '').replace(' ', '_')
line, = ax.plot('Year', column_rec_name, data=gender_degree_data, lw=2.5) ax.set_title(column, fontsize='small', loc='left', y=1.05) # move the axes title ax.set_ylim([0, 100]) ax.tick_params(axis='both', which='major', pad=15) # move the tick labels ax.grid()
fig.supxlabel('Year', y=-0.15) # with adjusted position fig.supylabel('Percent Degrees Awarded To Women', x=-0.05) # with adjusted position fig.suptitle('Majors', y=1.15) # with adjusted position
plt.show()