182 votes

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

Je suis un peu confus de ce qui se passe à l'arrière-plan lorsque je dessine des parcelles dans matplotlib, tbh, je ne suis pas clair avec la hiérarchie de l'intrigue, de haches et de la figure. J'ai lu la documentation et il a été utile, mais je suis toujours confus...

Le code ci-dessous dessine la même parcelle de trois façons:

#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 lorsque l'une de ces 3 méthodes sont appelées?

  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?

82voto

Deadpool Points 2274

Méthode 1

plt.plot(x, y)

Cela vous permet de tracer une seule figure avec (x,y) les coordonnées. 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 personnage(s) dans la même fenêtre. Comme vous l'écrivez, vous permettra de tracer un chiffre, mais vous pouvez faire quelque chose comme ceci:

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

Vous aurez la parcelle 4 chiffres qui sont nommés ax1, ax2, ax3 et ax4 chacun, mais sur la même fenêtre. Cette fenêtre se divise en 4 parties avec mon exemple.

Méthode 3

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

Je n'ai pas l'utiliser, 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()

enter image description here enter image description here

Autre exemple:

enter image description here

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