2016-02-28 36 views
14

Non sono davvero nuovo a matplotlib e mi vergogno profondamente di ammettere che l'ho sempre usato come strumento per ottenere una soluzione il più semplice e veloce possibile. Quindi so come ottenere grafici di base, sottotrame e cose e ho un bel codice che viene riutilizzato di tanto in tanto ... ma non ho alcuna "profonda (e) conoscenza" di matplotlib.Capire matplotlib: plt, figure, ax (arr)?

Recentemente ho pensato che dovevo cambiare questo e lavorare attraverso alcuni tutorial. Tuttavia, sono ancora confuso su matplotlibs plt, fig(ure) e ax(arr). Qual è davvero la differenza?

Nella maggior parte dei casi, per un po ' "frettoloso e approssimativo' tramando vedo persone che usano solo pyplot as plt e tracciare direttamente con plt.plot. Dato che io sto avendo roba multipla per tracciare abbastanza spesso, mi capita spesso di usare f, axarr = plt.subplots() ... ma la maggior parte volte si vede solo il codice di mettere i dati in axarr e ignorando la figura f

Quindi, la mia domanda è:.? quello che è un modo pulito per lavorare con matplotlib Quando usare plt solo, ciò che è o che cosa dovrebbe un figure essere usato per? Le sottotrame contengono solo dati? O è valido e buona pratica per tutto come lo stile, la pulizia di una trama, ..., all'interno di sottotrame?

Spero che questo non sia di ampio respiro. Fondamentalmente sto chiedendo un consiglio per i veri scopi di plt < ->fig < ->ax(arr) (e quando/come usarli correttamente).

Anche i tutorial sarebbero i benvenuti. La documentazione di matplotlib mi confonde abbastanza. Quando si cerca qualcosa di veramente specifico, come riscalare una legenda, diversi indicatori e colori della trama e così via sulla documentazione ufficiale è davvero preciso, ma le informazioni generali non sono poi così buone a mio parere. Troppi esempi diversi, nessuna vera spiegazione degli scopi ... sembra più o meno come un grande elenco di tutti i possibili metodi e argomenti dell'API.

+0

http://matplotlib.org/faq/usage_faq.html#parts-of-a-figure è un buon punto di partenza. – tacaswell

risposta

9

pyplot è l'API di livello "scripting" in matplotlib (la sua API di livello più elevato per fare molto con matplotlib). Ti permette di usare matplotlib usando un'interfaccia procedurale in un modo simile a quello che puoi fare con Matlab. pyplot ha una nozione di "valore attuale" e "assi correnti" a cui tutte le funzioni delegano (@tacaswell dixit). Pertanto, quando si utilizzano le funzioni disponibili sul modulo pyplot, si sta eseguendo il tracciamento sulla "figura corrente" e sugli "assi correnti".

Se si desidera il controllo "a grana fine" di dove/cosa si sta progettando, è necessario utilizzare un'API orientata agli oggetti utilizzando istanze di Figure e Axes.

Le funzioni disponibili in pyplot hanno un metodo equivalente in Axes.

Dal repo anatomy of matplotlib:

  • Il Figure è il contenitore di livello superiore in questa gerarchia. È la finestra/pagina generale in cui tutto è disegnato. È possibile avere più figure indipendenti e Figure s può contenere più assi.

Ma ...

  • maggior tracciato si verifica su un Axes. Gli assi sono effettivamente l'area su cui vengono tracciati i dati e qualsiasi tick/label/ecc associato ad esso. Di solito impostiamo un Axes con una chiamata a sottotrama (che posiziona Axes su una griglia regolare), quindi nella maggior parte dei casi, Axes e Subplot sono sinonimi.

  • Ogni Axes ha un XAxis e un YAxis. Questi contengono le zecche, le posizioni zecca, etichette, ecc

Se volete conoscere l'anatomia di un complotto è possibile visitare questo link.

0
  • pyplot è MATLAB come API per coloro che hanno familiarità con MATLAB e vogliono fare trame rapido e sporco
  • figure è API object-oriented per coloro che non si preoccupa di stile MATLAB tramando

Quindi è possibile utilizzare entrambi, ma forse non entrambi insieme.

+0

'pyplot' è implementato interamente in termini di API OO, quindi è possibile combinare e abbinare. – tacaswell

+0

Quindi dov'è la differenza tra 'pyplot' e' figure'? 'Pyplot' è l'intera finestra che si apre e 'figura' solo l'immagine contenuta nella finestra? – daniel451

+0

In generale, 'pyplot' per iPython. 'figure' per lo script python. Sebbene tu possa mescolare e abbinare, non lo trovo molto attraente. – Hun