Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

Martin G. Schultz Beginn mit Studentenvortrag 1 aus Teil 1

Ähnliche Präsentationen


Präsentation zum Thema: "Martin G. Schultz Beginn mit Studentenvortrag 1 aus Teil 1"—  Präsentation transkript:

1 Wissenschaftliche Programmierung mit Python - für Meteorologie und Atmosphärenforschung
Martin G. Schultz Beginn mit Studentenvortrag 1 aus Teil 1 Teil 5: Plotting, Part 1

2 Python Grafik Module Matplotlib: quasi Standard, sehr umfangreich, hohe Qualität, Einbindung in GUIs, starke Entwicklergemeide, … pyngl: NCAR graphics language; spezialisiert auf “Atmosphärenplots”, leistungsstark, aber nicht immer ganz fehlerfrei, kleine Gruppe von Entwicklern pygooglechart: Interface zu googlechart PyGrADS: Interface zu GrADS (2008) gnuplot.py: Interface zu gnuplot (2008) Mayavi: 3D plotting package (Enthought) Andere: PyQwt, biggles, gasp

3 Matplotlib Einfache Bedienung ähnlich MATLAB mit dem pyplot Modul oder ipython Vollständige Kontrolle aller grafischen Elemente via objektorientiertem Ansatz Setzt numpy voraus Erweiterung basemap zur Kartendarstellung Erweiterung mplot3d für 3D Plots (alpha-Status) Sehr hilfreich: Matplotlib Gallery (Klick auf den Plot zeigt den zugehörigen Quellcode an) Eine sehr gute Übersicht über die wesentlichen Dinge findet sich auf Für Details siehe auch

4 Matplotlib Konzept scripting layer artist layer backend layer Pyplot
Figure artist layer Axes Line2D XAxis YAxis Text x-label x-ticks draw FigureCanvas Renderer: z.B. Agg (anti grain geometry), ein schneller pixel renderer in C++, der auch für png output verwendet wird. „FigureCanvas is the paper, the renderer puts ink on the paper. Artists know how to use the paintbrush to put ink on the paper.“ Primitive artists: Line2D, Text, Rectangle, Circle Composite artists (=collections): Figure, Axes, Axis, Ticks Axes most important – defines most Matplotlib API methods (hist, plot, bar, …) backend layer Renderer Event based on article

5 Figure, Axes, etc. (y)axis axes.title figure figure.text Text: xi
n axes (subplot) (x)axis.major_ticks (x)axis.majorticklabels

6 Matplotlib Koordinatensysteme
matplotlib spends a lot of time transforming coordinates from one system to another. These coordinate systems include: data: the original raw data values axes: the space defined by a particular axes rectangle figure: the space containing the entire figure display: the physical coordinates used in the output (e.g. points in PostScript, pixels in PNG) from

7 Matplotlib API demo Histogram plot -- Vorbereitung
Version 1: Pyplot (MATLAB ähnliche Kommandosprache) Version 2: Nutzung von Artists und FigureCanvas Beide Formen können gemischt werden: man kann mit plt.gcf() die aktuelle Figure Instanz bekommen und mit plt.gca() die aktuelle Axes Instanz. plt.plot gibt eine Liste von Line2D Objekten zurück; plt.hist gibt ein Tupel (n, bins, patches) zurück.

8 Pyplot: 1-dimensionale Daten
Method Function errorbar Kurve mit Fehlerbalken loglog, semilogx, semilogy Plot mit logarithmischen Achsen plot zeichne Linien und/oder Symbole plot_date zeichne Kurven mit Datums (x) Achse plotfile Lese Daten aus Datei und plotte polar Polarplot scatter x,y Scatterplot step Stufenplot errorbar bzw. plot: errorbar kann imme rnur eine Kurve zeichnen, plot auch mehrere gleichzeitig errorbar plot_date polar scatter

9 Pyplot: 2-dimensionale Daten
Method Function barbs Windsymbole (Richtung und Geschwindigkeit) contour, contourf Konturplot (clabel für Beschriftung) mit Linien bzw. gefüllt hexbin „hexagon binning plot „ hist2d 2D Histogramm (ähnlich hexbin) pcolormesh Farbgitter-Plot (auch pcolor) quiver 2D Feld von Pfeilen (z.B. Windvektoren) streamlines Strömungslinien tricontour, tricontourf Konturplot mit Triangulation (Linien bzw. gefüllt) tripcolor Farbfeld mit Triangulation triplot Gitterplot mit Triangulation errorbar bzw. plot: errorbar kann imme rnur eine Kurve zeichnen, plot auch mehrere gleichzeitig Ausgelassen: matshow over pause spy subplot2grid subplot_tool subplots_adjust switch_backend (experimental) table tight_layout (für subplot) waitforbuttonpress hist2d barbs contour tricontourf streamlines triplot hexbin

10 Der Plot-Befehl und Plot-Optionen
Darstellung von Zeitreihen Der Plot-Befehl und Plot-Optionen

11 plt.plot – hatten wir schon mal…
siehe PythonWiss01_introduction

12 Der plt.plot Befehl Ein Text für die Legende. y-Werte: meist ein
numpy array. x-Werte: meist ein numpy array. Wird nur ein Argument angegeben, dann stehen hier die y-Werte und x wird von 0 bis len(y) gezählt. Farbe und Plotsymbol („marker“). Statt dieser Kurzform kann auch marker=„x“ und markerfacecolor=„r“ angegeben werden. Weiter kann eine Verbindungslinie spezifiziert werden (z.B. ′-′).

13 Der plt.plot Befehl vollständig (1)
Das kann sehr nützlich sein, um die Linieneigenschaften nachträglich zu ändern!

14 Plot line and marker symbols
lines Keyword arguments: alpha = (opaqueness) linestyle = -, None linewidth = 3. marker = * , None markeredgecolor = k|r|g|b|c|m|y|w|#ffc000 , None markeredgewidth = 2. markerfacecolor = k|r|g|b|c|m|y|w|#ffc000 , None markersize = 8. for more options, see

15 plt.plot Keywords (1) * Beispiel folgt (Info: diese Keywords entsprechen line2D Eigenschaften) Keyword Beschreibung *alpha Transparenz-1 (0 = transparent, 1 = opak) animated {True, False} See Matplotlib/Animations *antialiased axes Referenz zum Koordinatensystem (siehe OO-Plotting) *clip_box Clip (Abschneiden) am Rand einer gegebenen Bounding Box *clip_on Clip (Abschneiden) am Achsenrand {True, False} clip_path {[ (Path, Transform) | Patch | None ]} See clippath_demo.html *color Farbe (der Linie) contains Für Event-Handling {callable function} See Keyword Beschreibung *dash_ capstyle {″butt″, ″round″, ″projecting″} dash_ joinstyle {″miter″, ″round″, ″bevel″} Kein sichtbarer Effekt(?) *dashes {sequence of on/off ink in points} *drawstyle {″default″, ″steps″, ″steps-pre″, ″steps-mid″, ″steps-post″} figure Referenz zum „Panel“ (siehe OO-Plotting) *fillstyle Füllung der Symbole {″full″, ″bottom″, ″left″, ″right″, ″top″, ″none″} gid {an id string} irgendeine kryptische Bedeutung… label Bezeichnung der Kurve (siehe legend() ) *linestyle Linienart {″-″, ″--″, ″-.″, ″:″, ″None″, ″ ″, ″″ or same with prepended drawstyle ″steps--″} *linewidth Stärke der Linie in Punkten {float} fillstyle = „none“ funktioniert nicht (python 2.7) – benutze stattdessen markerfacecolor=„none“ ! … (siehe

16 plt.plot Keywords (2) Keyword Beschreibung lod
„Level of detail“ {True, False} marker Markierungssymbol (siehe unten) marker edgecolor Farbe des Symbol-Umrisses (siehe unten) marker edgewidth Linienstärke des Symbolumrisses {float} *marker facecolor Füllfarbe des Symbols (siehe unten) *marker facecoloralt Zweite Füllfarbe des Symbols bei fillstyle== ″bottom″, ″left″, ″right″, ″top″ (siehe unten) *markersize Symbolgröße {float} markevery {None | integer | (startind, stride)} picker {float distance in points or callable pick function fn(artist, event)} pickradius {float distance in points} Keyword Beschreibung rasterized Zeichne Element als Pixelgrafik {True, False, None} Effekt nur bei Vektor-Renderern (pdf, postscript) solid_ capstyle {″butt″, ″round″, ″projecting″} see dashed_capstyle solid_ joinstyle {″miter″, ″round″, ″bevel″} see dashed_joinstyle *transform Koordinatentransformation (z.B. „axes“ coordinates (0..1) statt Datenkoordinaten) (siehe unten) url {a URL string} ??? visible {True, False} zorder Anordnung („layer“) auf der Leinwand. Höhere Werte werden später gezeichnet {int} … (siehe

17 Plot Optionen - Demo clip see plot_options_demo.py

18 Custom plot markers plt.plot(…, marker= )
Regular polygons can be defined with a tuple (nedges, type, angle): (7, 0, 30) - polygon (7, 1, 30) - star (7, 2, 30) - asterisk Letters, numbers and math symbols can be plotted via LaTex strings: r′$\sum′ r′$\tau′ Use raw strings, else \t will be interpreted as TAB! regular polygons funktionierten nicht an der Uni Bonn (3. Dez. 2012) You can define any marker using a vertex list: ((0.5,0.5),(0.,0.),(0.5,-0.5),(-0.5,-0.5), (0.,0.),(-0.5,0.5),(0.5,0.5)) a tuple of tuples … or a path object (see

19 Plot Optionen festlegen
Durch Keyword Argumente im plot Befehl A la MATLAB durch den plt.setp Befehl Durch Aufruf der entsprechenden set_... Methode des jeweiligen Objekts

20 Titel, Text und Achsenbeschriftungen
plt.xlabel(″x-Achse″) plt.ylabel(″y-Achse″) plt.title(″Mein toller Plot″) plt.text(x, y, ″Annotation″) plt.annotate(…) plt.suptitle(″Bildueberschrift″) plt.figtext(x, y, ″Bildtext″) ax.set_xlabel(…) ax.set_ylabel(…) ax.set_title(…) ax.text(…) ax.annotate(…) fig.suptitle(…) fig.text(…) suptitle title xlabel ylabel

21 Beschriftung mit mathematischen Symbolen
Alle Textobjekte in Python matplotlib können mathematische Zeichen enthalten „mathtext“ stellt einen großen Umfang der Latex Zeichen dar raw string normal text group mathtext

22 Anpassung von Plot-Optionen
Beispiel: Temperatur-Zeitreihen (Dateien aus Teil 4: meteo_record_bonn-endenich_2011.csv und meteo_record_bonn-endenich_2012.csv) Einfacher Plot Linienstil und Farben, Symbole, Achsenbeschriftungen, formatiertes Datum Text-Kontrolle, mathematischer Text, Überschriften, weitere Plot-Optionen Axes Layout Kontrolle, mehrere Plots (=Axes), gemeinsame Achsen, weitere Textkontrolle Etwas Datenprozessierung, Überlagerung zweier Kurven mit Transparenz, Datumsumwandlung, forcierte Labels, Legende

23 1. Einfacher Plot Daten einlesen csv2rec: Variablennamen sind
immer lowercase (s. Teil 4)

24 1. Einfacher Plot Ergebnis
Achsen werden automatisch skaliert, x-Achse wird automatisch als Datum beschriftet, Farben werden automatisch gewählt

25 2. Linienstil und Farben, Symbole, Achsenbeschriftungen, formatiertes Datum
Daten einlesen rote Kreise mit durchgezogener Linie Achsenbeschriftung Definiere Datumsformat (s. Teil 4) Wende Format an

26 2. Linienstil und Farben, Symbole, Achsenbeschriftungen, formatiertes Datum
Ergebnis

27 3. Text-Kontrolle, mathematischer Text, Überschriften, weitere Plot-Optionen
Daten einlesen Font-Eigenschaften Setze Font-Eigenschaften als default Fasse Plot- Optionen in dictionary zusammen Übergebe keywords als dict ein bisschen Mathe-Text

28 3. Text-Kontrolle, mathematischer Text, Überschriften, weitere Plot-Optionen
Ergebnis

29 4. Axes Layout Kontrolle, mehrere Plots (=Axes), gemeinsame Achsen, weitere Textkontrolle
Lese jeweils zwei Temperaturvariablen aus einer Datei

30 4. Axes Layout Kontrolle, mehrere Plots (=Axes), gemeinsame Achsen, weitere Textkontrolle
rows columns pos enthält: x0, y0, x1, y1, width, height

31 4. Axes Layout Kontrolle, mehrere Plots (=Axes), gemeinsame Achsen, weitere Textkontrolle
Unicode Grad-Symbol \u00B0 Ausrichten der y-Achsen Beschriftung

32 4. Axes Layout Kontrolle, mehrere Plots (=Axes), gemeinsame Achsen, weitere Textkontrolle
Ergebnis

33 5. Überlagerung zweier Kurven mit Transparenz, Datumsumwandlung, forcierte Labels, Legende
Trick zur Umwandlung von datetime Objekten in „Tag im Jahr“

34 5. Überlagerung zweier Kurven mit Transparenz, Datumsumwandlung, forcierte Labels, Legende
Text für Legende

35 5. Überlagerung zweier Kurven mit Transparenz, Datumsumwandlung, forcierte Labels, Legende
Explizite Werte für Ticks und Beschriftung

36 5. Überlagerung zweier Kurven mit Transparenz, Datumsumwandlung, forcierte Labels, Legende
Ergebnis

37 EXKURS: Objekt-Orientierte Programmierung Warum OO? Pyplot (und MATLAB) benutzen das Konzept der „current figure“ und „current axes“, d.h. das Programm merkt sich die letzten Einstellungen Interaktive Anwendungen mit GUI oder Grafiken mit mehreren Panelen, die voneinander abhängen sollen, sind mit Pyplot zu beschränkt, da jedes „Fenster“ seine eigenen Einstellungen verwalten können soll … aber das ist eher für Fortgeschrittene interessant...

38 EXKURS: Objekt-Orientierte Programmierung Matplotlib Klassen (nur die wichtigsten) Figure: quasi das Blatt Papier bzw. die Datei, auf dem/in der alle Plots angeordnet sind Axes: ein rechteckiger Bereich, der ein Koordinatensystem hat und in dem gezeichnet werden kann. Jeder „subplot“ definiert seine eigenen axes. Artist: Basisklasse für alles, das gezeichnet wird Line2D: Linien und Symbole patches: Polygone text: Text und TextWithDash colors, cm: Farbdefinitionen und Farbtabellen ticker: Formatierung von Achsenabschnitten Da kommen wir später vielleicht drauf zurück. Erst einmal nicht so wichtig; hilft aber u.U. bei der Suche nach keyword Optionen etc.

39 EXKURS: Objekt-Orientierte Programmierung OO Beispiel (Forts.) Rückgabewert von ax.plot ist eine Line2D Instanz. Diese kann man benutzen, um die Eigenschaften der Kurve nachträglich zu ändern: Tipp: line, = … ist das sogenannte „tuple unpacking“. Der plot Befehl gibt immer eine Liste von Linienobjekten zurück. Statt lines = ax.plot(…) ; line = lines[0] kommt man durch tuple unpacking mit einem Befehl aus. Siehe auch:

40 HowTo: Achsen ohne Ticks und Beschriftung
ax.get_xaxis().set_visible(False) ax.get_yaxis().set_visible(False) oder: ax.get_xaxis().set_ticks([]) ax.get_yaxis().set_ticks([]) (die zweite Variante erlaubt immer noch ein xlabel bzw. ylabel anzuzeigen) Hat man das ax Objekt nicht, kann man es ermitteln: ax = fig.get_axes()[0] (sofern man das fig Objekt kennt) (ax ist eine Liste von Achsensystemen!) oder: ax = plt.gca() (ermittelt das aktuelle Achsenobjekt in pyplot) Beispiel für gca() aus der Matplotlib Referenz: ax = plt.gca() ax.set_ylim([0,10]) oder (pylab, ipython way): plot(t,s) set(gca(), „ylim“, [0,10])

41 Anhang 1: Die Pyplot Befehle
Darstellung 1-dimensionaler Daten Darstellung 2-dimensionaler Daten Statistische Plots Autokorrelation, Spektralanalyse, etc. Einbettung von Bildern Grafik anzeigen und speichern Beschriftung, Titel, Legende Grafische Elemente Kontrolle der Achsendarstellung Farbtabellen, Farbmanagement Figure und Axes Kontrolle Sonstiges errorbar bzw. plot: errorbar kann imme rnur eine Kurve zeichnen, plot auch mehrere gleichzeitig Ausgelassen: matshow over pause spy subplot2grid subplot_tool subplots_adjust switch_backend (experimental) table tight_layout (für subplot) waitforbuttonpress

42 Pyplot: 1-dimensionale Daten
Method Function errorbar Kurve mit Fehlerbalken loglog, semilogx, semilogy Plot mit logarithmischen Achsen plot zeichne Linien und/oder Symbole plot_date zeichne Kurven mit Datums (x) Achse plotfile Lese Daten aus Datei und plotte polar Polarplot scatter x,y Scatterplot step Stufenplot errorbar bzw. plot: errorbar kann imme rnur eine Kurve zeichnen, plot auch mehrere gleichzeitig errorbar plot_date polar scatter

43 Pyplot: 2-dimensionale Daten
Method Function barbs Windsymbole (Richtung und Geschwindigkeit) contour, contourf Konturplot (clabel für Beschriftung) mit Linien bzw. gefüllt hexbin „hexagon binning plot „ hist2d 2D Histogramm (ähnlich hexbin) pcolormesh Farbgitter-Plot (auch pcolor) quiver 2D Feld von Pfeilen (z.B. Windvektoren) streamlines Strömungslinien tricontour, tricontourf Konturplot mit Triangulation (Linien bzw. gefüllt) tripcolor Farbfeld mit Triangulation triplot Gitterplot mit Triangulation errorbar bzw. plot: errorbar kann imme rnur eine Kurve zeichnen, plot auch mehrere gleichzeitig Ausgelassen: matshow over pause spy subplot2grid subplot_tool subplots_adjust switch_backend (experimental) table tight_layout (für subplot) waitforbuttonpress hist2d barbs contour tricontourf streamlines triplot hexbin

44 Pyplot: Statistische Plots
Method Function bar Balkendiagramm, optional mit Fehlerbalken barh Horizontaler Barplot boxplot Box und Whisker Plot (auch horizontal) hist Histogramm pie Tortendiagramm errorbar bzw. plot: errorbar kann imme rnur eine Kurve zeichnen, plot auch mehrere gleichzeitig Ausgelassen: broken_barh matshow over pause spy stackplot stem subplot2grid subplot_tool subplots_adjust switch_backend (experimental) table tight_layout (für subplot) waitforbuttonpress bar boxplot hist pie

45 Pyplot: Autokorrelation etc.
Method Function acorr Autokorrelation cohere Kohärenzplot csd „cross spectral density“ psd Powerspektrum specgram Spektrogramm xcorr Kreuzkorrelation acorr cohere psd errorbar bzw. plot: errorbar kann imme rnur eine Kurve zeichnen, plot auch mehrere gleichzeitig Ausgelassen: matshow over pause spy subplot2grid subplot_tool subplots_adjust switch_backend (experimental) table tight_layout (für subplot) waitforbuttonpress xcorr csd specgram

46 Pyplot: Einbettung von Bildern
Method Function imread Bilddatei einlesen imsave Bild in Datei speichern imshow Bild darstellen errorbar bzw. plot: errorbar kann imme rnur eine Kurve zeichnen, plot auch mehrere gleichzeitig Ausgelassen: matshow over pause spy subplot2grid subplot_tool subplots_adjust switch_backend (experimental) table tight_layout (für subplot) waitforbuttonpress siehe auch

47 Pyplot: Grafik anzeigen&speichern
Method Function savefig Bild als (png) Datei speichern show Bild in einem interaktiven Fenster anzeigen Interaktive Grafik nach show()

48 Pyplot: Beschriftung, Titel
Method Function annotate Text und Pfeil colorbar Farbbalken zeichnen figlegend Legende für eine Figure (siehe legend) figtext Text der Figure hinzufügen (siehe text) legend Legende (für Axes) suptitle Überschrift für die Figure text Text (in ein Axes Objekt) title Titel eines Axes Objekts annotate

49 Pyplot: Grafische Elemente
Method Function arrow Pfeil axhline, axvline horizontale/vertikale Linie über die gesamte Breite/Höhe axhspan, axvspan Rechteck über die gesamte Breite/Höhe fill Zeichne gefüllte Polygone fill_between, fill_betweenx Fülle Zwischenraum zwischen zwei Kurven hlines, vlines Horizontale und vertikale Linien rgrid, thetagrids Radiale Gitterlinien für einen Polarplot und deren Position vlines axvline axvspan axhspan axhline hlines fill_between

50 Pyplot: Achsenkontrolle
Method Function autoscale Berechne Skalierung der Achsen axis Lese oder setze Achseneigenschaften box Rahmen um Achsen an oder ausschalten grid Schalte Achsengitter an oder aus locator_params, tick_params Achsen-Ticks Eigenschaften minorticks_off, minorticks_on Schalte Achsen-Subticks aus/an ticklabel_format Formatiere Achsenbeschriftung twinx, twiny Zweite x bzw y Achse xlabel, ylabel Achsenbeschriftungen xlim, ylim Achsen-Wertebereich xscale, yscale lineare bzw. logarithmische Skalierung xticks, yticks Tickpositionen und Label

51 Pyplot: Farbtabellen etc.
Method Function autumn, bone, cool, copper, flag, gray, hot, hsv, jet, pink, prism, spectral, spring, summer, winter Wahl der entsprechenden Farbtabelle clim Setze Farbgrenzen für Bilder set_cmap Setze Farbtabelle

52 Pyplot: Figure und Axes Kontrolle
Method Function axes Füge Axes Objekt zur Figure hinzu cla, clf Lösche aktuelle Axes bzw. Figure delaxes Lösche ein Axes Objekt aus der Figure figure Erstelle neues Figure Objekt gca, gcf, gci Liefere aktuelle Axes, Figure, bzw. „Bild“ („colorable artist“) margin Ränder (um Axes) einstellen sca Setze eine Axes als aktuelle subplot Erzeuge eine neue Axes und ordne sie auf der Figure an subplots Erzeuge rows*columns Achsensysteme (optional mit geteilten Achsen)

53 Pyplot: Sonstiges Method Function get_plot_commands
Liste der verfügbaren Plot Befehle (quasi Online-Hilfe) rc, rcdefaults Setze Default-Einstellungen (nützlich z.B. zur Wahl der Schriftart) setp Setze Artist Eigenschaften

54 Pyplot: …und noch mehr…
broken_barh close connect disconnect draw findobj figimage get_current_fig_manager get_figlabels get_fignums ginput hold ioff ion ishold isinteractive matshow over pause sci spy subplot2grid subplot_tool subplots_adjust switch_backend (experimental) table tight_layout (für subplot) waitforbuttonpress


Herunterladen ppt "Martin G. Schultz Beginn mit Studentenvortrag 1 aus Teil 1"

Ähnliche Präsentationen


Google-Anzeigen