Pourquoi beaucoup d'exemples utilisent "fig, ax = plt.sous-intrigues()" dans Matplotlib/pyplot/python

j'apprends à utiliser matplotlib en étudiant des exemples, et beaucoup d'exemples semblent inclure une ligne comme la suivante avant de créer un seul tracé...

fig, ax = plt.subplots()

Voici quelques exemples...

  • modifier le texte de l'étiquette de la tique
  • http://matplotlib.org/examples/pylab_examples/boxplot_demo2.html

je vois cette fonction beaucoup utilisé, même si l'exemple n'est d'essayer de créer un tableau unique. Est-il un autre avantage? La démo officielle de subplots() utilise également f, ax = subplots pour créer un seul graphique, et il ne fait référence à une hache qu'après cela. C'est le code qu'ils utilisent.

# Just a figure and one subplot
f, ax = plt.subplots()
ax.plot(x, y)
ax.set_title('Simple plot')
152
demandé sur Community 2015-12-08 20:39:39

2 réponses

plt.subplots() est une fonction qui renvoie un tuple contenant une figure et des axes objet(s). Ainsi, en utilisant fig, ax = plt.subplots() vous déballez ce tuple dans les variables fig et ax . Avoir fig est utile si vous voulez changer les attributs de niveau de figure ou enregistrer la figure comme un fichier image plus tard (par exemple avec fig.savefig('yourfilename.png') . Vous n'avez certainement pas à utiliser l'objet figure retourné mais beaucoup de gens l'utilisent plus tard donc il est commun de voir. Aussi, tous les axes d'objets (les objets qui ont des méthodes de pointage), ont de toute façon un objet figure parent, ainsi:

fig, ax = plt.subplots()

est plus concis que ceci:

fig = plt.figure()
ax = fig.add_subplot(111)
191
répondu jonchar 2015-12-08 17:51:25

juste un supplément ici.

la question suivante est que si je veux plus de sous-lots dans la figure?

comme mentionné dans le Doc, nous pouvons utiliser fig = plt.subplots(nrows=2, ncols=2) pour définir un groupe de sous-lots avec grille(2,2) dans un objet de figure.

alors comme nous le savons, le fig, ax = plt.subplots() renvoie un tuple, essayons fig, ax1, ax2, ax3, ax4 = plt.subplots(nrows=2, ncols=2) d'abord.

ValueError: not enough values to unpack (expected 4, got 2)

il soulève une erreur, mais pas d'inquiétude, parce que nous voyons maintenant que plt.subplots() retourne en fait un tuple avec deux éléments. Le premier doit être un objet de figure, et l'autre doit être un groupe d'objets de sous-lots.

alors réessayons:

fig, [[ax1, ax2], [ax3, ax4]] = plt.subplots(nrows=2, ncols=2)

et vérifier le type:

type(fig) #<class 'matplotlib.figure.Figure'>
type(ax1) #<class 'matplotlib.axes._subplots.AxesSubplot'>

bien sûr, si vous utilisez les paramètres comme (nrows=1, ncols=4), alors le format devrait être:

fig, [ax1, ax2, ax3, ax4] = plt.subplots(nrows=1, ncols=4)

Donc n'oubliez pas de garder la construction de la liste comme même comme la grille de sous-lots nous avons mis dans la figure.

J'espère que cela vous sera utile.

25
répondu Duskash 2017-07-21 04:29:44