J'ai commencé avec matplot et géré quelques parcelles de base, mais maintenant j'ai du mal à découvrir comment faire certaines choses dont j'ai besoin maintenant :(
Ma vraie question est de savoir comment placer un titre global et une légende globale sur une figure avec des sous-graphiques.
Je fais des sous-graphiques 2x3 où j'ai beaucoup de graphiques différents dans différentes couleurs (environ 200). Pour distinguer (la plupart) d'entre eux, j'ai écrit quelque chose comme
def style(i, total):
return dict(color=jet(i/total),
linestyle=["-", "--", "-.", ":"][i%4],
marker=["+", "*", "1", "2", "3", "4", "s"][i%7])
fig=plt.figure()
p0=fig.add_subplot(321)
for i, y in enumerate(data):
p0.plot(x, trans0(y), "-", label=i, **style(i, total))
# and more subplots with other transN functions
(des pensées à ce sujet? :)) Chaque sous-intrigue a la même fonction de style.
J'essaye maintenant d'obtenir un titre global pour toutes les sous-parcelles et aussi une légende globale qui explique tous les styles. Je dois également rendre la police minuscule pour qu'elle s'adapte aux 200 styles (je n'ai pas besoin de styles complètement uniques, mais au moins une tentative)
Quelqu'un peut-il m'aider à résoudre cette tâche?
la source
Réponses:
Titre global : Dans les nouvelles versions de matplotlib, on peut utiliser la méthode Figure.suptitle () de
Figure
:Alternativement (basé sur le commentaire de @Steven C. Howell ci-dessous (merci!)), Utilisez la fonction matplotlib.pyplot.suptitle () :
la source
import matplotlib.pyplot as plt
la commande pourrait être saisie simplement commeplt.figure(); plt.suptitle('Title centered above all subplots'); plt.subplot(231); plt.plot(data[:,0], data[:,1]);
etc ...En plus de la réponse orbeckst, on peut également vouloir décaler les sous- graphiques vers le bas. Voici un MWE de style POO:
donne:
la source
Pour les étiquettes de légende, vous pouvez utiliser quelque chose comme ci-dessous. Les légendes sont les lignes de tracé enregistrées. modFreq est l'endroit où le nom des étiquettes réelles correspondant aux lignes de tracé. Ensuite, le troisième paramètre est l'emplacement de la légende. Enfin, vous pouvez transmettre tous les arguments car je suis ici mais j'ai principalement besoin des trois premiers. De plus, vous êtes censé le faire si vous définissez correctement les étiquettes dans la commande plot. Pour appeler simplement la légende avec le paramètre d'emplacement et il trouve les étiquettes dans chacune des lignes. J'ai eu plus de chance de créer ma propre légende comme ci-dessous. Semble fonctionner dans tous les cas où il n'a jamais semblé que l'inverse se déroule correctement. Si vous ne comprenez pas, faites-le moi savoir:
Vous pouvez également utiliser la jambe pour modifier les tailles de police ou presque n'importe quel paramètre de la légende.
Le titre global comme indiqué dans le commentaire ci-dessus peut être fait en ajoutant du texte via le lien fourni: http://matplotlib.sourceforge.net/examples/pylab_examples/newscalarformatter_demo.html
la source
suptitle
semble la voie à suivre, mais pour ce que ça vaut, lefigure
a unetransFigure
propriété que vous pouvez utiliser:la source