2014-05-18 11 views
5

Sto cercando di utilizzare sottotrame simile a ciò che viene mostrato qui:plot.subplot ---> 'figura' non ha alcun attributo 'plot'

http://matplotlib.org/examples/pylab_examples/subplots_demo.html

axarr = plt.subplots(len(column_list), sharex=True) 
subp_num = 0 
for j in column_list: 
    axarr[subp_num].plot(df.values[2:,j]) 
    subp_num = subp_num + 1 

tanto sono presente errore:

axarr[subp_num].plot(df.values[2:,j]) 
AttributeError: 'Figure' object has no attribute 'plot' 

Qualche suggerimento su cosa sto facendo di sbagliato? Grazie

risposta

8

Hai un problema evidente: tutti gli esempi nel link che fornisci sembrano

f, axarr = plt.subplots(...) 

dove il f è la Figure si sono successivamente trattando come se avesse un attributo plot. Se si lavora con un numero arbitrario di sottotrame, si potrebbe fare:

axarr = plt.subplots(...) 
f, axarr = axarr[0], axarr[1:] 

Inoltre, si utilizza un ciclo while con un indice di incremento, che è impacciato e soggetto ad errori; basta usare un ciclo for:

for j, ax in zip(column_list, axarr): 
    ax.plot(df.values[2:, j]) 
+0

Grazie mille jonrsharp, ha funzionato solo aggiungendo "f". – user2564259