2016-06-22 23 views
25

Sono un po 'confuso cosa sta succedendo al backend quando disegno trame in matplotlib, tbh, non sono chiaro con la gerarchia della trama, degli assi e della figura. Ho letto la documentazione ed è stato utile, ma sto ancora confuso ...Qual è la differenza tra i grafici di disegno usando la trama, gli assi o la figura in matplotlib?

Il codice sotto disegna la stessa trama in tre modi diversi -

#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) 

Ora la mia domanda è -

  1. Qual è la differenza tra tutti e tre, intendo cosa sta succedendo sotto il cofano quando viene chiamato uno dei 3 metodi?

  2. Quale metodo deve essere utilizzato quando e quali sono i pro e i contro dell'usarli?

+3

ho già letto questo, ma non ho trovato la risposta soddisfacente a tutti. Spiega la gerarchia, ma solleva anche la confusione perché non c'è un modo convenzionale, perché l'oggetto figura è persino esposto? – hashcode55

+1

Ho eseguito il upvoted e ho completato questa domanda <3 –

risposta

10

Il primo modo let tracciare una sola figura con (x, y) coordinate. Se vuoi solo ottenere un grafico, puoi usare in questo modo.

Il secondo modo consente di tracciare una o più figure nella stessa finestra. Come si scrive, si tracciare una sola figura, ma si può fare qualcosa di simile:

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

potrete tracciare 4 figure che prendono il nome AX1, AX2, ax3 e AX4 ognuno, ma sulla stessa finestra. Questa finestra sarà divisa in 4 parti con il mio esempio.

Il terzo modo: non l'ho usato, ma è possibile trovare la documentazione.

Per esempio:

import numpy as np 
import matplotlib.pyplot as plt 

# First way # 

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

figure1 = plt.plot(x,y) 

# Second way # 

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

Altro esempio:

enter image description here

+0

@ hashcode55 ogni figura è indipendente. Ti mostrerò un esempio – Deadpool

+0

@ hashcode55 Se è una buona risposta/esempio a te, non esitare a mettere "risolva";) – Deadpool

+1

@ hashcode55 Modificherò con un esempio (solo la figura delle mie ricerche in Astrofisica, il lo script è troppo lungo (1300 righe));) Ogni figura è indipendente;) – Deadpool

Problemi correlati