Quelle est la différence entre dessiner des tracés en utilisant plot, axes ou figure dans matplotlib?

Je suis un peu confus ce qui se passe au backend quand je dessine des parcelles dans matplotlib, tbh, Je ne suis pas clair avec la hiérarchie de l'intrigue, des axes et de la figure. J'ai lu la documentation et c'était utile mais je suis toujours confus...

Le code ci-dessous dessine le même tracé de trois manières différentes -

#creating the arrays for testing
x = np.arange(1, 100)
y = np.sqrt(x)
#1st way
plt.plot(x, y)
#2nd way
ax = plt.subplot()
ax.plot(x, y)
#3rd way
figure = plt.figure()
new_plot = figure.add_subplot(111)
new_plot.plot(x, y)

Maintenant, ma question est -

  1. Quelle est la différence entre les trois, je veux dire ce qui se passe sous le capot quand l'une des méthodes 3 est appelée?

  2. La méthode Qui devrait être utilisée quand et quels sont les avantages et les inconvénients de l'utilisation de tout sur ces?

40
demandé sur hashcode55 2016-06-22 17:04:10

1 réponses

Méthode 1

plt.plot(x, y)

Cela vous permet de tracer une seule figure avec des coordonnées (x, y). Si vous voulez juste pour obtenir un graphique, vous pouvez utiliser de cette façon.

Méthode 2

ax = plt.subplot()
ax.plot(x, y)

Cela vous permet de tracer une ou plusieurs figures dans la même fenêtre. En l'écrivant, vous ne tracerez qu'une seule figure, mais vous pouvez faire quelque chose comme ceci:

fig1, ((ax1, ax2), (ax3, ax4)) = plt.subplots(2, 2)

Vous tracerez 4 figures nommées ax1, ax2, ax3 et ax4 chacune mais sur la même fenêtre. Cette fenêtre sera juste divisé en 4 parties avec mon exemple.

Méthode 3

fig = plt.figure()
new_plot = fig.add_subplot(111)
new_plot.plot(x, y)

Je ne l'ai pas utilisé, mais vous pouvez trouver de la documentation.

Exemple:

import numpy as np
import matplotlib.pyplot as plt

# Method 1 #

x = np.random.rand(10)
y = np.random.rand(10)

figure1 = plt.plot(x,y)

# Method 2 #

x1 = np.random.rand(10)
x2 = np.random.rand(10)
x3 = np.random.rand(10)
x4 = np.random.rand(10)
y1 = np.random.rand(10)
y2 = np.random.rand(10)
y3 = np.random.rand(10)
y4 = np.random.rand(10)

figure2, ((ax1, ax2), (ax3, ax4)) = plt.subplots(2, 2)
ax1.plot(x1,y1)
ax2.plot(x2,y2)
ax3.plot(x3,y3)
ax4.plot(x4,y4)

plt.show()

entrez la description de l'image ici entrez la description de l'image ici

Autre exemple:

entrez la description de l'image ici

18
répondu Deadpool 2018-06-09 05:03:49