79 votes

Donner un sous-titre aux graphiques

Je veux donner à mon graphique un titre en gros caractères de 18pt, puis un sous-titre en dessous en caractères plus petits de 10pt. Comment puis-je faire cela dans matplotlib? Il semble que la fonction title() ne prend qu'une seule chaîne de caractères avec un attribut de fontsize. Il doit y avoir un moyen de le faire, mais comment?

91voto

Floris van Vugt Points 141

Ce que je fais, c'est utiliser la fonction title() pour le sous-titre et la fonction suptitle() pour le titre principal (elles peuvent prendre des arguments de taille de police différents).

39voto

Jason Points 522

Bien que cela ne vous donne pas la flexibilité associée à plusieurs tailles de police, ajouter un caractère de saut de ligne à votre chaîne pyplot.title() peut être une solution simple;

plt.title('Graphique vraiment important\nC'est pourquoi c'est important')

29voto

Tim Misner Points 293

Ceci est un exemple de code pandas qui implémente la réponse de Floris van Vugt (20 décembre 2010). Il a dit:

>Ce que je fais, c'est utiliser la fonction title() pour le sous-titre et suptitle() pour le titre principal (ils peuvent prendre différents arguments de taille de police). J'espère que cela aide!

import pandas as pd
import matplotlib.pyplot as plt

d = {'série a': pd.Series([1., 2., 3.], index=['a', 'b', 'c']),
      'série b': pd.Series([1., 2., 3., 4.], index=['a', 'b', 'c', 'd'])}
df = pd.DataFrame(d)

chaîne_de_titre = "Ceci est le titre"
chaîne_de_sous_titre = "Ceci est le sous-titre"

plt.figure()
df.plot(kind='bar')
plt.suptitle(title_string, y=1.05, fontsize=18)
plt.title(subtitle_string, fontsize=10)

Note : Je n'ai pas pu commenter cette réponse car je suis nouveau sur stackoverflow.

21voto

Jouni K. Seppänen Points 15129

Je ne pense pas qu'il y ait quelque chose de intégré, mais vous pouvez le faire en laissant plus d'espace au-dessus de vos axes et en utilisant figtext:

axes([.1,.1,.8,.7])
figtext(.5,.9,'Foo Bar', fontsize=18, ha='center')
figtext(.5,.85,'Lorem ipsum dolor sit amet, consectetur adipiscing elit',fontsize=10,ha='center')

ha est l'abréviation de horizontalalignment.

17voto

data.dude Points 326

La solution qui a fonctionné pour moi est :

  • utilisez suptitle() pour le titre actuel
  • utilisez title() pour le sous-titre et ajustez-le en utilisant le paramètre optionnel y :

    import matplotlib.pyplot as plt
    """
            du code ici
    """
    plt.title('Mon sous-titre',fontsize=16)
    plt.suptitle('Mon titre',fontsize=24, y=1)
    plt.show()

Il peut y avoir un chevauchement désagréable entre les deux morceaux de texte. Vous pouvez corriger cela en jouant avec la valeur de y jusqu'à ce que vous obteniez le bon résultat.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X