Je crée une figure dans Matplotlib comme ceci:
from matplotlib import pyplot as plt
fig = plt.figure()
plt.plot(data)
fig.suptitle('test title')
plt.xlabel('xlabel')
plt.ylabel('ylabel')
fig.savefig('test.jpg')
Je veux spécifier des tailles de police pour le titre de la figure et les étiquettes d'axe. J'ai besoin que les trois soient des tailles de police différentes, donc définir une taille de police globale ( mpl.rcParams['font.size']=x
) n'est pas ce que je veux. Comment définir les tailles de police pour le titre de la figure et les étiquettes d'axe individuellement?
python
matplotlib
vasek1
la source
la source
mpl.rcParams['font.size'] = 20
et j'ai essayé de changer les valeurs à 10 et 14. J'ai d'abord trouvé que j'avais des erreurs à moins de changermpl
pourplt
. Cette modification a effacé l'erreur, mais la ligne de code n'a eu aucun effet sur mes titres ou étiquettes. Bien sûr, cette syntaxe est correcte?mpl
commande?Réponses:
Fonctions traitant de texte comme
label
,title
, etc. acceptent les mêmes paramètres quematplotlib.text.Text
. Pour la taille de police, vous pouvez utilisersize/fontsize
:Pour les réglages
title
etlabel
tailles globaux,mpl.rcParams
contientaxes.titlesize
etaxes.labelsize
. (À partir de la page):(Pour autant que je puisse voir, il n'y a aucun moyen de définir
x
et d'y
étiqueter les tailles séparément.)Et je vois que cela
axes.titlesize
n'affecte passuptitle
. Je suppose que vous devez régler cela manuellement.la source
mpl.rcParams
. J'ai édité ma réponse.plt.rcParams.update({'axes.titlesize': 'small'})
rcParams
lien, utilisezfigure.titlesize
en plus deaxes.titlesize
.python -c 'import matplotlib as mpl; print(mpl.__version__); print("figure.titlesize" in mpl.rcParams.keys())'
. Le résultat est1.5.1
,True
. 1) Quelle version de matplotlib utilisez-vous? Quelle version de Python? 2) Serait-ce un bug où, pour une raison quelconque, il acceptestr
mais pasunicode
dans Py2?Vous pouvez également le faire globalement via un dictionnaire rcParams:
la source
'x-large'
?pylab.rcParams.keys()
pour voir la liste complète des paramètres.ax.set_title('some title', fontsize=15)
,ax.set_xlabel('some xlabel', fontsize=12)
? Il semblercParams
que n'accepte que des chaînes.'axes.labelsize': 32,
Si vous êtes plus habitué à utiliser des
ax
objets pour faire votre traçage, vous trouverez peut-être leax.xaxis.label.set_size()
plus facile à mémoriser, ou du moins plus facile à trouver en utilisant tab dans un terminal ipython. Il semble avoir besoin d'une opération de rafraîchissement après pour voir l'effet. Par exemple:Je ne connais pas de méthode similaire pour définir la taille du sous-titre après sa création.
la source
fig.suptitle('test title', fontsize = 20)
semble fonctionner.ax.set_xlabel('xlabel', fontsize = 20)' also works, in which case we can do away with
ax.xaxis.label.set_size (20) `.ax.xaxis.label.set_size()
lorsque je travaille de manière interactive avec un tracé ipython et je veux faire une évaluation visuelle rapide d'une variété de tailles de police.plt.xlabel()
vsax.set_xlabel()
comme vous le dites), ils sont équivalents, avec la mise en garde que lesplt.*
fonctions fonctionnent sur l' axe / figure actuel . Donc, si vous configurez une figure avec plusieurs axes, vous voudrez probablement utiliser des appels explicitesax1.set_xlabel()
pour éviter toute confusion.Pour modifier uniquement la police du titre (et non la police de l'axe), j'ai utilisé ceci:
Le fontdict accepte tous les kwargs de matplotlib.text.Text .
la source
La définition globale des tailles de police via
rcParams
doit être effectuée avecLes valeurs par défaut peuvent être restaurées à l'aide de
Vous pouvez également le faire en créant une feuille de style dans le
stylelib
répertoire sous le répertoire de configuration matplotlib (vous pouvez obtenir votre répertoire de configuration depuismatplotlib.get_configdir()
). Le format de la feuille de style estSi vous avez une feuille de style sur,
/path/to/mpl_configdir/stylelib/mystyle.mplstyle
vous pouvez l’utiliser viaVous pouvez également créer (ou modifier) un fichier matplotlibrc qui partage le format
Selon le fichier matplotlibrc que vous modifiez, ces changements seront utilisés uniquement pour le répertoire de travail actuel, pour tous les répertoires de travail qui n'ont pas de fichier matplotlibrc ou pour tous les répertoires de travail qui n'ont pas de fichier matplotlibrc et où aucun autre fichier matplotlibrc n'a été spécifié. Voir cette section de la page de personnalisation de matplotlib pour plus de détails.
Une liste complète des
rcParams
touches peut être récupérée viaplt.rcParams.keys()
, mais pour ajuster les tailles de police que vous avez (italique cité à partir d' ici )axes.labelsize
- Taille de police des étiquettes x et yaxes.titlesize
- Taille de police du titre des axesfigure.titlesize
- Taille du titre de la figure (Figure.suptitle()
)xtick.labelsize
- Taille de police des étiquettes des ticksytick.labelsize
- Taille de police des étiquettes des tickslegend.fontsize
- Taille de police pour les légendes (plt.legend()
,fig.legend()
)legend.title_fontsize
- Taille de police pour les titres de légende, définieNone
sur la même valeur que les axes par défaut. Voir cette réponse pour un exemple d'utilisation.qui acceptent tous les tailles de chaîne
{'xx-small', 'x-small', 'smaller', 'small', 'medium', 'large', 'larger', 'x-large', 'xxlarge'}
ou unfloat
poucept
. Les tailles de chaîne sont définies par rapport à la taille de police par défaut qui est spécifiée parfont.size
- la taille de police par défaut pour le texte, indiquée en pts. 10 pt est la valeur standardEn outre, le poids peut être spécifié (mais uniquement pour la valeur par défaut, il apparaît) par
font.weight
- Le poids par défaut de la police utilisée partext.Text
. Accepte{100, 200, 300, 400, 500, 600, 700, 800, 900}
ou'normal'
(400),'bold'
(700),,'lighter'
et'bolder'
( par rapport au poids actuel ).la source
Une autre solution pour modifier la taille de la police consiste à modifier le remplissage. Lorsque Python enregistre votre PNG, vous pouvez modifier la mise en page à l'aide de la boîte de dialogue qui s'ouvre. L'espacement entre les axes, le rembourrage si vous le souhaitez peuvent être modifiés à ce stade.
la source
Placer
right_ax
avantset_ylabel()
ax.right_ax.set_ylabel('AB scale')
la source
7 (meilleure solution)
6 (solution légèrement pire)
la source