08 Ergebnisse richtig präsentieren

Ergebnisse richtig präsentieren

Seine Ergebnisse richtig präsentieren zu können ist fast genauso wichtig wie das richtige Ergebnis ausrechnen zu können, denn Ergebnisse, die richtig sind aber keiner versteht sind im Endeffekt genauso wertlos wie falsche Ergebnisse.
Da eine Tabelle mit Werten schön zu gestalten nicht wirklich viel mit Matlab zu tun hat konzentrieren wir uns hier um die graphische Darstellung von Ergebnissen.

Die oberste Maxime beim Erstellen von Graphiken lautet:

Ein Bild muss für sich selber sprechen können!

D.h. man sollte beim ersten Anschauen einen Eindruck davon bekommen, was eigentlich dargestellt wird, ohne ergänzenden Text lesen zu müssen.

Schlecht:

Pflichtbestandteile einer Graphik

  • Aussagekräftiger Titel
  • Achsenbeschriftungen mit Einheiten
  • Legende bei mehreren Plots

Meistens auch nicht verkehrt: ein Grid.

In Matlab:

title('Mein sehr aussagekräftiger Titel')
xlabel('X-Werte [Einheit]')
ylabel('Y-Werte [Einheit]')
legend('Erster Plot','Zweiter Plot')
grid on

Gut:

plot() - Linien und Punkte

Mit plot(x,y,..) kann man Linien und Punkte in 2D plotten.

Mit zusätzlichen Input-Argumenten lassen sich alle möglichen Dinge anpassen, wie z.B.
- Punkt-Form (Punkt, Kreuz, Stern, Kreis usw)
- Punkt-Größe
- Farbe
- Linien-Art
- Linien-Stärke

Wie genau das geht kann man auf der entsprechenden Seite von MATLAB nachlesen.

Linien oder Punkte mit Fehlerbalken

In der Wissenschaft oft zwingend notwendig: Fehlerbalken.

Mit der Funktion:
errorbar(x,y,yneg,ypos,xneg,xpos)
Kann man genau diese erstellen.

x und y sind die eigentlichen Werte, yneg und ypos sind die Fehler in negativer und positiver Y-Richtung, gleiches gilt für xneg und xpos in der X-Richtung.

Ansonsten funktioniert die Funktion genau wie plot()

Logarithmische Plots

Wenn man exponentielles Verhalten analysieren möchte sind logaritmische Plots oft hilfreich.

Man hat drei Versionen zur Auswahl:

loglog(x,y) - Beide Achsen sind logarithmisch
semilogx(x,y) - Nur die x-Achse ist logarithmisch
semilogy(x,y) - Nur die y-Achse ist logarithmisch.

Histogramm

Auch oft benötigt: ein Histogramm, dass einem Auskunft über die Häufigkeitsverteilung in einem Datensatz gibt.

Es gibt grundsätzlich vier Möglichkeiten, ein Histogramm zu erstellen:

  1. histogram(werte) - Man überlässt es einem (undurchsichtigen) Matlab-Algorithmus, die Werte zu gruppieren. Einfach, aber nicht immer das, was man braucht.
  2. histogram(werte,N) - Die Werte werden in N Gruppen eingeteilt.
  3. histogram(werte,grenzen) - Die Gruppen umfassen alle Werte die in den Grenzen liegen. "grenzen" ist ein Vektor mit den oberen- bzw. unteren Grenzwerten für die Gruppen.
  4. freq = histc() oder freq = histcounts() - Die Häufigkeit wird berechnet und in "freq" abgespeichert. Das braucht man, wenn man nicht nur eine Graphik erstellen möchte, sondern mit den Werten weiter rechnen muss. histcounts() ist empfohlen, funktioniert aber auf der alten Matlab-Version im CIP nicht, sondern nur histc().
    Dann kann man mit bar(gruppen,freq) einen Bar-Plot erstellen, der genauso aussieht wie das Ergebnis von histogram(). Wenn man möchte kann man das Histogramm natürlich auch mit Punkten machen.

Karten

Als Geowissenschaftler hat man natürlich viel mit Karten zu tun, seien es einfach nur topographische Karten, oder welche die einem eine Magnefeld- oder Boguer-Anomalie, die Hangneigung, Erosionsraten oder Element-Konzentrationen anzeigen.

MATLAB ist vermutlich nicht das Werkzeug der ersten Wahl, um Karten zu erstellen, vor allem weil die Projektion mit richtiger GIS-Software wesentlich einfacher vorzunehmen ist, aber dafür kann man mit MATLAB super Sachen ausrechnen, die auf einer Karte dargestellt werden sollen, oder die auf einer Karte basieren. Sowas ist mit GIS-Software widerum eher umständlich, es kann also manchmal Sinn machen MATLAB für Karten zu benutzen.

Bitte beachten: Statt einer Legende braucht man jetzt eine Colorbar, die man mit dem Befehl colorbar hinzufügt!

In Wirklichkeit braucht man ein paar mehr Befehle als die unten vorgestellten, um die Karten so hinzubekommen. Wer Lust und Zeit hat (guter Witz, ich weiß), kann sich das Skript hier runterladen, mal einen Blick auf die Befehle werfen und versuchen zu verstehen, was vor sich geht. Ansonsten wird euch das (hoffentlich) noch bei Zeiten erklärt.
>>>Download<<<

Man hat die Auswahl zwischen verschiedenen Stilen:

quiver()

Eher selten gebraucht: ein Vektorfeld.
Mit quiver(x,y,u,v) wobei die Vektoren aus u und v an den Koordinatne aus x und y geplottet werden.

 

contour()

Isolinien.
Wird mit contour(z) oder contour(x,y,z)  erstellt.

Gut für Feldlinien (z.B. Magnetfeld, Schwereanomalie).

contourf()

Isolinien, gefüllt.
Wird mit contourf(z) oder contourf(x,y,z)  erstellt.

Gute Allround-Darstellung, weil sehr übersichtlich.

imagesc()

Kontinuierlicher Farbverlauf.

Wird mit imagesc(z) oder imagesc(x,y,z)  erstellt.

Meistens die beste Wahl für topographische Karten.

surf()

3D-Darstellung.

Wird mit surf(x,y,z)  erstellt. Mit surf(x,y,z,c) kann man die Werte c an den Koordinaten (x,y,z) darstellen.

Sieht schön aus, hat aber oft keinen praktischen Vorteil gegenüber zweidimensionalen Karten. Man kann so nämlich die Daten nicht mehr wirklich auslesen, aber eine 3D-Darstellung hilft dem menschlichen Gehirn oft beim Verstehen.

Alternativ: mesh(x,y,z)Wie surf(), aber als Drahtgitternetz statt gefüllten Flächen.

Formentreues Plotten

Hin und wieder ist es wichtig, dass eine Graphik nicht verzerrt wird, und die eigentlich Form sichtbar ist.
(Zum Beispiel wenn man Kreise oder Kugeln plotten möchte)

Das erreicht man mit den Befehlen
axis equal
oder
daspect([1 1 1])