2016-02-28 4 views
14

Ich bin nicht wirklich neu zu matplotlib und ich schäme mich sehr zu zugeben, dass ich es immer als ein Werkzeug verwendet habe, um eine Lösung so schnell und einfach wie möglich zu bekommen. Ich weiß also, wie man Grundplots, Subplots und ähnliches bekommt und ziemlich viele Codes hat, die von Zeit zu Zeit wiederverwendet werden ... aber ich habe kein "tiefes (er) Wissen" von matplotlib.Matplotlib verstehen: PLT, Figur, Axt (arr)?

Kürzlich dachte ich, ich sollte das ändern und mich durch einige Tutorials arbeiten. Allerdings bin ich immer noch verwirrt über Matplotlibs plt, fig(ure) und ax(arr). Was ist der Unterschied?

In den meisten Fällen für einige „quick'n'dirty‘ Plotten sehe ich Leute mit nur pyplot as plt und direkt mit plt.plot plotten. Da ich mehrere Sachen habe ziemlich oft plotten, ich f, axarr = plt.subplots() häufig verwenden ... aber die meisten mal sehen Sie nur Codedaten in die axarr setzen und ignorieren die Zahl f

Also, meine Frage ist:.?, was eine saubere Art und Weise ist mit matplotlib zu arbeiten Wann verwendet plt nur, was ist oder was sollte ein figure sein verwendet für? Sollte Teilplots nur Daten enthalten? Oder ist es gültig und gute Praxis für alles wie das Entwerfen, Löschen eines Plots, ..., innerhalb von Teilplots?

Ich hoffe, dass dies nicht zu weit gefasst ist. Im Grunde bitte ich um einen Rat für die wahren Zwecke von plt < ->fig < ->ax(arr) (und wenn/wie man sie richtig verwendet).

Tutorials wäre auch willkommen. Die matplotlib-Dokumentation ist für mich eher verwirrend. Wenn man etwas wirklich Spezifisches sucht, wie das Umskalieren einer Legende, verschiedene Plotmarker und Farben usw. so ist die offizielle Dokumentation sehr präzise, ​​aber eher allgemeine Informationen sind meiner Meinung nach nicht so gut. Zu viele verschiedene Beispiele, keine wirklichen Erklärungen der Zwecke ... sieht mehr oder weniger wie eine große Liste aller möglichen API-Methoden und Argumente aus.

+0

http://matplotlib.org/faq/usage_faq.html#parts-of-a-figure ist ein guter Anfang. – tacaswell

Antwort

9

pyplot ist die 'scripting' Ebene API in Matplotlib (seine höchste Ebene API, viel mit Matplotlib zu tun). Es ermöglicht die Verwendung von Matplotlib mit einer prozeduralen Schnittstelle auf ähnliche Weise wie mit Matlab. pyplot hat eine Vorstellung von "aktuelle Figur" und "aktuelle Achsen", an die alle Funktionen delegieren (@tacaswell dixit). Wenn Sie also die auf dem Modul pyplot verfügbaren Funktionen verwenden, zeichnen Sie die aktuelle Figur und die aktuelle Achse.

Wenn Sie eine feinkörnige Kontrolle darüber haben möchten, wo/was Sie plotten möchten, sollten Sie eine objektorientierte API mit den Instanzen Figure und Axes verwenden.

Funktionen, die in pyplot verfügbar sind, haben eine äquivalente Methode in der Axes.

aus dem Repo anatomy of matplotlib:

  • Die Figure ist der Container auf oberster Ebene in dieser Hierarchie. Es ist das gesamte Fenster/die Seite, auf das alles gezeichnet wird. Sie können mehrere unabhängige Figuren haben und Figure s können mehrere Achsen enthalten.

Aber ...

  • meisten Plotten erfolgt auf einem Axes. Die Achsen sind effektiv der Bereich, in dem wir Daten und damit verbundene Ticks/Labels/etc darstellen. In der Regel werden wir eine Axes mit einem Anruf zum Nebenplot einrichten (die Axes in einem regelmäßigen Raster platziert), so in den meisten Fällen, Axes und Subplot sind auch.

  • Jede Axes hat eine XAxis und eine YAxis. Diese enthalten die Zecken, Zecken Orten, Etiketten, usw.

Wenn Sie die Anatomie von einem Grundstück wissen wollen Sie diese link besuchen können.

0
  • pyplot ist Matlab wie API für diejenigen, die mit Matlab vertraut sind und wollen schnell und schmutzig Plots
  • figure ist für diejenigen, die objektorientierte API machen, die nicht über Matlab Stil schert Plotten

So können Sie beide aber vielleicht nicht beide zusammen verwenden.

+0

'pyplot' ist vollständig in Bezug auf die OO-API implementiert, so dass Sie mischen können. – tacaswell

+0

Wo ist der Unterschied zwischen 'pyplot' und' figure'? Ist "pyplot" das gesamte Fenster, das erscheint und nur das Bild im Fenster "abbildet"? – daniel451

+0

Im Allgemeinen "pyplot" für iPython. 'Figur' für Python-Skript. Obwohl Sie mischen können, finde ich das nicht sehr ansprechend. – Hun