2015-07-30 14 views
23

Sono un po 'confuso su come funziona questo codice:Come posso ottenere più sottotrame in Matplotlib?

fig, axes = plt.subplots(nrows=2, ncols=2) 
plt.show() 

Come il fico, assi di lavoro in questo caso? Che cosa fa?

Anche perché non sarebbe questo lavoro per fare la stessa cosa:

fig = plt.figure() 
axes = fig.subplots(nrows=2, ncols=2) 

Grazie

risposta

39

Ci sono diversi modi per farlo. Il metodo subplots crea la figura insieme alle sottotrame che vengono quindi memorizzate nell'array ax. Per esempio:

import matplotlib.pyplot as plt 

x = range(10) 
y = range(10) 

fig, ax = plt.subplots(nrows=2, ncols=2) 

for row in ax: 
    for col in row: 
     col.plot(x, y) 

plt.show() 

enter image description here

Tuttavia, qualcosa come questo funziona anche, non è così "pulita" anche se dal momento che si sta creando una figura con sottotrame e quindi aggiungere su di loro:

fig = plt.figure() 

plt.subplot(2, 2, 1) 
plt.plot(x, y) 

plt.subplot(2, 2, 2) 
plt.plot(x, y) 

plt.subplot(2, 2, 3) 
plt.plot(x, y) 

plt.subplot(2, 2, 4) 
plt.plot(x, y) 

plt.show() 

enter image description here

+0

Invece di 'plot (x, y)' Ho la mia trama proveniente da un utente definito funzione, che crea un grafico con NetworkX. Come usarlo? – Sigur

7

leggere la documentazione: matplotlib.pyplot.subplots

pyplot.subplots() restituisce una tupla fig, ax che viene spacchettato in due variabili utilizzando la notazione

fig, axes = plt.subplots(nrows=2, ncols=2) 

il codice

fig = plt.figure() 
axes = fig.subplots(nrows=2, ncols=2) 

non funziona a causa subplots() è una funzione in pyplot non fa parte della sezione dell'oggetto Figure.

2

potresti essere interessato al fatto che a partire dalla versione 2.1 matplotlib il secondo codice dalla questione funziona fi ne pure.

Dal change log: classe

Figura ora ha metodo sottotrame La classe Figura ha ora() metodo che comporta come pyplot.subplots() ma su una figura esistente a sottotrame.

Esempio:

import matplotlib.pyplot as plt 

fig = plt.figure() 
axes = fig.subplots(nrows=2, ncols=2) 

plt.show() 
Problemi correlati