Wissenschaftliche Programmierung mit Python - für Meteorologie und Atmosphärenforschung Martin G....

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

Transcript of Wissenschaftliche Programmierung mit Python - für Meteorologie und Atmosphärenforschung Martin G....

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

Wissenschaftliche Programmierung mit Python

- für Meteorologie und Atmosphärenforschung

Martin G. Schultz

Teil 5: Plotting, Part 1

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

2

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

Python Grafik Module

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

Matplotlib

• Einfache Bedienung ähnlich MATLAB mit dem pyplot Modul oder ipython

• Vollständige Kontrolle aller grafischen Elemente via objektorientiertem Ansatz

3

Sehr hilfreich: Matplotlib Gallery http://matplotlib.org/gallery.html (Klick auf den Plot zeigt den zugehörigen Quellcode an)Eine sehr gute Übersicht über die wesentlichen Dinge findet sich aufhttp://www.loria.fr/~rougier/teaching/matplotlib/.Für Details siehe auch http://matplotlib.org/api/pyplot_api.html.

• Setzt numpy voraus• Erweiterung basemap zur Kartendarstellung• Erweiterung mplot3d für 3D Plots (alpha-Status)

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

Matplotlib Konzept

4

FigureCanvas

Renderer

Event

based on article http://www.aosabook.org/en/matplotlib.html

backend layer

Figure

Axes

Line2D

artist layer

XAxis YAxis Text …

x-label x-ticks …

dra

w

Pyplot scripting layer

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

Figure, Axes, etc.

5

figure

axes(subplot)

(y)axis

Text: xii=0

nfigure.text

axes.title

(x)axis.majorticklabels(x)axis.major_ticks

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

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)

6from http://www.aosabook.org/en/matplotlib.html

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

Matplotlib API demo

7

Histogram plot -- Vorbereitung

Version 1: Pyplot (MATLAB ähnliche Kommandosprache)

Version 2: Nutzung von Artists und FigureCanvas

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

Pyplot: 1-dimensionale Daten

8

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 plot_date polar scatter

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

Pyplot: 2-dimensionale Daten

9

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

barbs contour

hexbin

hist2d tricontourf triplotstreamlines

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

DER PLOT-BEFEHL UND PLOT-OPTIONEN

Darstellung von Zeitreihen

10

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

plt.plot – hatten wir schon mal…

11siehe PythonWiss01_introduction

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

Der plt.plot Befehl

12

x-Werte: meist ein numpy array. Wird nur ein Argument angegeben, dannstehen hier die y-Werteund x wird von 0 bislen(y) gezählt.

y-Werte: meist ein numpy array.

Farbe und Plotsymbol („marker“). Statt dieser Kurzform kann auchmarker=„x“ undmarkerfacecolor=„r“ angegeben werden. Weiter kann eine Verbindungslinie spezifiziert werden (z.B. ′-′).

Ein Text für die Legende.

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

Der plt.plot Befehl vollständig (1)

13

Das kann sehr nützlich sein, um die Linieneigenschaften nachträglich zu ändern!

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

Plot line and marker symbols

14

lines

Keyword arguments:

alpha = 0..1 (opaqueness)

linestyle = -, Nonelinewidth = 3.

marker = * , Nonemarkeredgecolor = k|r|g|b|c|m|y|w|#ffc000 , Nonemarkeredgewidth = 2.

markerfacecolor = k|r|g|b|c|m|y|w|#ffc000 , Nonemarkersize = 8.

for more options, seehttp://matplotlib.org/api/pyplot_api.html

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

plt.plot Keywords (1)

15… (siehe http://matplotlib.org/api/pyplot_api.html)

* Beispiel folgt (Info: diese Keywords entsprechen line2D Eigenschaften)

Keyword Beschreibung

*alpha Transparenz-1 (0 = transparent, 1 = opak)

animated {True, False}See http://www.scipy.org/Cookbook/Matplotlib/Animations

*antialiased {True, False}

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 http://matplotlib.org/examples/api/clippath_demo.html

*color Farbe (der Linie)

contains Für Event-Handling{callable function}See http://matplotlib.org/users/artists.html

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}

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

plt.plot Keywords (2)

16… (siehe http://matplotlib.org/api/pyplot_api.html)

Keyword Beschreibung

lod „Level of detail“ {True, False}

marker Markierungssymbol (siehe unten)

markeredgecolor

Farbe des Symbol-Umrisses (siehe unten)

markeredgewidth

Linienstärke des Symbolumrisses {float}

*markerfacecolor

Füllfarbe des Symbols (siehe unten)

*markerfacecoloralt

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}

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

Plot Optionen - Demo

17see plot_options_demo.py

clip

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

Custom plot markers

18

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!

plt.plot(…, marker= )

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 http://matplotlib.org/api/path_api.html#matplotlib.path.Path)

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

Plot Optionen festlegen

1. Durch Keyword Argumente im plot Befehl

2. A la MATLAB durch den plt.setp Befehl

3. Durch Aufruf der entsprechenden set_... Methode des jeweiligen Objekts

19

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

Titel, Text und Achsenbeschriftungen

20

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″)

suptitle

title

xlabel

ylab

el

ax.set_xlabel(…)

ax.set_ylabel(…)

ax.set_title(…)

ax.text(…)

ax.annotate(…)

fig.suptitle(…)

fig.text(…)

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

Beschriftung mit mathematischen Symbolen

• Alle Textobjekte in Python matplotlib können mathematische Zeichen enthalten

• „mathtext“ stellt einen großen Umfang der Latex Zeichen dar

21

raw string normaltext

group

mathtext

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

Anpassung von Plot-OptionenBeispiel: Temperatur-Zeitreihen (Dateien aus Teil 4: meteo_record_bonn-endenich_2011.csv und meteo_record_bonn-endenich_2012.csv)

1. Einfacher Plot2. Linienstil und Farben, Symbole, Achsenbeschriftungen,

formatiertes Datum3. Text-Kontrolle, mathematischer Text, Überschriften,

weitere Plot-Optionen4. Axes Layout Kontrolle, mehrere Plots (=Axes), gemeinsame

Achsen, weitere Textkontrolle5. Etwas Datenprozessierung, Überlagerung zweier Kurven

mit Transparenz, Datumsumwandlung, forcierte Labels, Legende

22

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

23

1. E

infa

cher

Plo

t

Daten einlesen

csv2rec: Variablennamen sindimmer lowercase (s. Teil 4)

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

24

1. E

infa

cher

Plo

tErgebnis

Achsen werden automatisch skaliert, x-Achse wird automatisch als Datum beschriftet, Farben werden automatisch gewählt

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

25

2. L

inie

nstil

und

Far

ben,

Sym

bole

, Ac

hsen

besc

hrift

unge

n, fo

rmati

erte

s D

atum

Daten einlesen

rote Kreise mit durchgezogener Linie

Achsenbeschriftung

Definiere Datumsformat(s. Teil 4)

Wende Format an

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

26

Ergebnis2.

Lin

iens

til u

nd F

arbe

n, S

ymbo

le,

Achs

enbe

schr

iftun

gen,

form

atier

tes

Dat

um

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

27

3. T

ext-K

ontr

olle

, mat

hem

atisc

her T

ext,

Übe

rsch

riften

, wei

tere

Plo

t-Opti

onen

Daten einlesen

Font-Eigenschaften

Setze Font-Eigenschaften als default

Fasse Plot-Optionen in dictionary zusammen

Übergebe keywords als dict

ein bisschen Mathe-Text

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

3. T

ext-K

ontr

olle

, mat

hem

atisc

her T

ext,

Übe

rsch

riften

, wei

tere

Plo

t-Opti

onen

Ergebnis

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

29

4. A

xes

Layo

ut K

ontr

olle

, meh

rere

Plo

ts

(=Ax

es),

gem

eins

ame

Achs

en, w

eite

re

Text

kont

rolle

Lese jeweils zwei Temperaturvariablen aus einer Datei

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

30

4. A

xes

Layo

ut K

ontr

olle

, meh

rere

Plo

ts

(=Ax

es),

gem

eins

ame

Achs

en, w

eite

re

Text

kont

rolle

pos enthält: x0, y0, x1, y1, width, height

rows columns

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

31

4. A

xes

Layo

ut K

ontr

olle

, meh

rere

Plo

ts

(=Ax

es),

gem

eins

ame

Achs

en, w

eite

re

Text

kont

rolle

Unicode Grad-Symbol\u00B0

Ausrichten der y-Achsen Beschriftung

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

32

Ergebnis4.

Axe

s La

yout

Kon

trol

le, m

ehre

re P

lots

(=

Axes

), ge

mei

nsam

e Ac

hsen

, wei

tere

Te

xtko

ntro

lle

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

33

5. Ü

berla

geru

ng z

wei

er K

urve

n m

it Tr

ansp

aren

z, D

atum

sum

wan

dlun

g, fo

rcie

rte

Labe

ls, L

egen

de

Trick zur Umwandlung vondatetime Objekten in „Tag im Jahr“

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

34

5. Ü

berla

geru

ng z

wei

er K

urve

n m

it Tr

ansp

aren

z, D

atum

sum

wan

dlun

g, fo

rcie

rte

Labe

ls, L

egen

de

Text für Legende

30% Transparenz

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

35

5. Ü

berla

geru

ng z

wei

er K

urve

n m

it Tr

ansp

aren

z, D

atum

sum

wan

dlun

g, fo

rcie

rte

Labe

ls, L

egen

deExplizite Werte für Ticks und Beschriftung

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

36

Ergebnis5.

Übe

rlage

rung

zw

eier

Kur

ven

mit

Tran

spar

enz,

Dat

umsu

mw

andl

ung,

forc

iert

e La

bels

, Leg

ende

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

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

37… aber das ist eher für Fortgeschrittene interessant...

EXKURS: Objekt-Orientierte Programmierung

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

Matplotlib Klassen

• 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

38

(nur die wichtigsten)

Da kommen wir später vielleicht drauf zurück. Erst einmal nicht so wichtig; hilft aber u.U. beider Suche nach keyword Optionen etc.

EXKURS: Objekt-Orientierte Programmierung

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

OO Beispiel (Forts.)

39

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 gibtimmer eine Liste von Linienobjekten zurück. Statt lines = ax.plot(…) ; line = lines[0] kommt man durch tuple unpacking mit einem Befehl aus.

Siehe auch: http://matplotlib.org/contents.html

EXKURS: Objekt-Orientierte Programmierung

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

HowTo: Achsen ohne Ticks und Beschriftung

40

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)

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

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

41

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

Pyplot: 1-dimensionale Daten

42

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 plot_date polar scatter

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

Pyplot: 2-dimensionale Daten

43

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

barbs contour

hexbin

hist2d tricontourf triplotstreamlines

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

Pyplot: Statistische Plots

44

Method Function

bar Balkendiagramm, optional mit Fehlerbalken

barh Horizontaler Barplot

boxplot Box und Whisker Plot (auch horizontal)

hist Histogramm

pie Tortendiagramm

bar boxplot hist pie

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

Pyplot: Autokorrelation etc.

45

Method Function

acorr Autokorrelation

cohere Kohärenzplot

csd „cross spectral density“

psd Powerspektrum

specgram Spektrogramm

xcorr Kreuzkorrelation

acorr

xcorr

cohere

csd

psd

specgram

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

Pyplot: Einbettung von Bildern

46

Method Function

imread Bilddatei einlesen

imsave Bild in Datei speichern

imshow Bild darstellen

siehe auch http://matplotlib.org/users/image_tutorial.html

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

Pyplot: Grafik anzeigen&speichern

47

Method Function

savefig Bild als (png) Datei speichern

show Bild in einem interaktiven Fenster anzeigen

Interaktive Grafiknach show()

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

Pyplot: Beschriftung, Titel

48

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

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

Pyplot: Grafische Elemente

49

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 axvlineaxvspan

axhspan

axhline

hlines

fill_between

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

Pyplot: Achsenkontrolle

50

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

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

Pyplot: Farbtabellen etc.

51

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

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

Pyplot: Figure und Axes Kontrolle

52

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)

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

Pyplot: Sonstiges

53

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

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

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

54