2013-01-21 13 views
6

In Matplotlib un sacco di esempi si presentano sotto forma ax = subplot(111) e funziona quindi vengono applicati su ax, come ax.xaxis.set_major_formatter(FuncFormatter(myfunc)). (Trovati here)plt.figure() vs sottotrame in Matplotlib

In alternativa, quando non ho bisogno di sottotrame, posso solo fare plt.figure() e poi trama tutto ciò che ho bisogno con plt.plot() funzioni o funzioni simili.

Ora, sono esattamente nel secondo caso, ma voglio chiamare la funzione set_major_formatter sull'asse X. Chiamarlo su plt ovviamente non funzionerà:

>>> plt.xaxis.set_major_formatter(FuncFormatter(myfunc)) 
Traceback (most recent call last): 
File "<stdin>", line 1, in <module> 
AttributeError: 'module' object has no attribute 'xaxis' 

Cosa devo fare qui?

+0

Vorrei poter sopravvivere questo più volte ... Devo ancora "rompere sotto la superficie" e capire davvero il ragionamento dietro sottotrame e figure e perché le sottotrame sembrano avere più "potere" cioè capacità di configurare, ecc. – AJP

risposta

6

Se viene selezionata la cifra che si desidera, basta usare gca() per ottenere l'istanza attuale dell'asse:

ax = gca() 
ax.xaxis.set_major_formatter(FuncFormatter(myfunc)) 
+0

Se si verifica un errore 'NomeErrore: nome 'gca' non è definito 'prova usando' ax = plt.gca() 'invece di' ax = gca() ' – 3kstc

2

Un'altra opzione è quella di utilizzare l'oggetto dato restituito da figure().

fig = plt.figure() 

# Create axes, either: 
# - Automatically with plotting code: plt.line(), plt.plot(), plt.bar(), etc 
# - Manually add axes: ax = fig.add_subplot(), ax = fig.add_axes() 

fig.axes[0].get_xaxis().set_major_formatter(FuncFormatter(myfunc)) 

Questa opzione è molto utile quando si gestisce diversi appezzamenti, come si può specificare quale trama verrà aggiornato.

Problemi correlati