From deffe54af8a6363ae9f7dc2dbaad9375b8eb1ac3 Mon Sep 17 00:00:00 2001 From: Jan Grewe Date: Thu, 12 Nov 2015 17:26:11 +0100 Subject: [PATCH] plotting extended --- plotting/lecture/images/VectorBitmap.pdf | Bin 0 -> 40108 bytes plotting/lecture/plotting.tex | 362 +++++++++++++++++------ 2 files changed, 271 insertions(+), 91 deletions(-) create mode 100644 plotting/lecture/images/VectorBitmap.pdf diff --git a/plotting/lecture/images/VectorBitmap.pdf b/plotting/lecture/images/VectorBitmap.pdf new file mode 100644 index 0000000000000000000000000000000000000000..c9b5bc0332753d5c96bff4ca96e1258822f50d63 GIT binary patch literal 40108 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 YYG)6I+5ce(Edit Plot'' erreicht man den Plot Editor. Je nachdem + \caption{\textbf{Graphisches Interface: ``Plot Editor''.} \"Uber das Menu + ``Tools $\rightarrow$ Edit Plot'' erreicht man den Plot Editor. Je nachdem welches Element des Plots ausgew\"ahlt wurde ver\"andern sich - Einstellungsm\"oglichkeiten. Weitere Eigenschaften und + die Einstellungsm\"oglichkeiten. Weitere Eigenschaften und Einstellungen k\"onnen \"uber den ``Property Editor'', rechts, eingesehen und ver\"andert werden. Der ``Property Editor'' ist \"uber die Schaltfl\"ache ``More Properties'' erreichbar.}\label{ploteditorfig} \end{figure} -Alle Einstellungen, die man \"uber das graphische Interface machen -kann sind auch \"uber Befehle auf der Kommandozeile m\"oglich. Das -hei{\ss}t, dass die Einstellungen problemlos in ein Skript oder eine -Funktion eingebaut werden k\"onnen. Dieser Ansatz hat den Vorteil, -dass man sich die M\"uhe nur einmal machen muss. Zu den h\"aufigsten -Einstellungen geh\"oren: -\begin{enumerate} -\item Einstellungen der Linienplots: - \begin{itemize} - \item St\"arke und Farbe. - \item Linienstil, Marker. - \end{itemize} -\item Achsbeschriftung: - \begin{itemize} - \item \code{xlabel}, \code{ylabel}. - \item Schriftart und Gr\"o{\ss}e. - \end{itemize} -\item Achsenskalierung und Ticks: - \begin{itemize} - \item Skalierung der Achsen (Minumum und Maxmimum, logarithmisch oder linear). - \item Manuelles Setzen der Ticks, ihrer Richtung und Beschriftung. - \item Grid or no Grid? - \end{itemize} -\item Setzen von globalen Parametern: - \begin{itemize} - \item Einstellung der Papiergr\"o{\ss}e und plzieren der - Zeichenfl\"ache. - \item Soll die Zeichenfl\"ache auf allen vier Seiten von einer Box eingeschlossen sein oder nicht? - \item Speichern der Abbildung als pdf. - \end{itemize} -\end{enumerate} +Alle Einstellungen, die \"uber das graphische Interface vorgenommen +werden k\"onnen sind auch \"uber Befehle auf der Kommandozeile +m\"oglich. Das hei{\ss}t, dass die Einstellungen problemlos in ein +Skript oder eine Funktion eingebaut werden k\"onnen. Dieser Ansatz hat +den Vorteil, dass man sich die M\"uhe nur einmal machen muss. Die +Abbildungen k\"onnen exakt reprosuziert werden. -\subsection{Globale Einstellungen} - -\TODO - -Das folgende Listing \ref{niceplotlisting} zeigt das Skript, das die -Abbildung \ref{spikedetectionfig} erstellt und speichert. Abh\"angig -davon, ob man Eigenschaften der Abbildung oder der Achsen setzen will -benutzt man die \code{set} Funktion und \"ubergibt ihr ein sogenanntes -Handle der Achse oder der Abbildung und sowohl den Namen als auch den -gew\"unschten Wert der Eigenschaft: \code{set(gcf, 'PaperUnits', - 'centimeters')} setzt die Eigenschaft ``PaperUnits'' der Abbildung -auf ``centimeters''. (Standard Einheit ist, nat\"urlich, ``inches''.) -\code{gcf} steht f\"ur ``get current figure'' und stellt ein Handle -der aktuellen Abbildung zur Verf\"ugung. Um Eigenschaften der Achse zu -setzten benutzt man: \code{set(gca, 'linewidth', 1.5)} wobei -\code{gca} f\"ur ``get current axis'' steht. Wenn man den Namen einer -Eigenschaft nicht kennt, kann man entweder in der Hilfe nachschlagen -oder sie im ``Property Editor'' finden. +\subsection{Einfaches Plotten} + +Einen einfachen Linienplot zu erstellen ist denkbar +einfach. Angenommen, es existiert einer Variable \code{y} im +\enterm{Workspace}, die die darzustellenden Daten enth\"alt. Es +gen\"ugt folgender Funktionsaufruf: \code{plot(y)}. Wenn bislang noch +keine Abbildung erstellt wurde \"offnet \matlab{} ein neues Fenster +und stellt die Daten als Linienplot dar. Dabei werden die Datenpunkte +durch eine Linie verbunden. Die Messpunkte selbst sind nicht +sichtbar. Wenn schon eine Abbildung existiert, wird der Inhalt +ersetzt. Das Festhalten von bestehenden Plots kann an- oder abgestellt +werden indem \code{hold on} bzw. \code{hold off} vor dem \code{plot()} +Befehl aufgerufen wird. + +Im obigen Plot Aufruf wird nur ein Argument, das \code{y}, an die +Funktion \code{plot} \"ubergeben. \code{plot} erh\"alt nur die +y-Werte. \matlab{} substituiert in diesem Fall die fehlenden x-Werte, +indem eine Schrittweite von 1 angenommen wird. Die x-Achse reicht also +von 1 bis zur L\"ange des Vektors \code{y}. Diese Skalierung der +x-Achse ist nur in den wenigsten F\"allen erw\"unscht. Besser ist es, +die zugeh\"origen x-Werte explixit zu \"ubergeben und so z.B. die +y-Werte als Funktion der Zeit darzustellen (\code{plot(x, y)}). +Standard\"a{\ss}ig wird der erste Lininenplot mit in blau, mit +durchgezogener Linie, ohne Marker und der Strichst\"arke 1 +dargestellt. Der zweite Linienplot erh\"alt automatisch die Farbe +'rot'. Alle anderen Eigenschaften sind identisch. Die Reihenfolge der +Farben ist vordefiniert kann aber durch das Setzen einer +\enter{colormap} beeinflusst werden. Die Tabellen +\ref{plotlinestyles} zeigen vordefinierte Werte f\"r den Linienstil, +die Farbe und die verschiedenen Marker. + + +\begin{table}[tp] + \titlecaption{Vordefinierte Linienstile (links), Farben (Mitte) und Markersymbole (rechts).}{}\label{plotlinestyles} + \begin{minipage}[t]{0.3\textwidth} + \vspace{0pt} + \begin{tabular}{c|l} + \textbf{Linienstil} & \textbf{K\"urzel} \\\hline + durchgezogen & '-' \\ + gestrichelt & '--' \\ + gepunktet & ':' \\ + Strichpunkte & '.-' \\\hline + \end{tabular} + \end{minipage} + \vspace{0pt} + \begin{minipage}[t]{.3\textwidth} + \vspace{0pt} + \hspace{0.05\textwidth} + \begin{tabular}{lc} + \textbf{Farbe} & \textbf{K\"urzel} \\ \hline + Rot & 'r'\\ + Gr\"un & 'g' \\ + Blau & 'b' \\ + Cyan & 'c' \\ + Magenta & 'm' \\ + Gelb & 'y' \\ + Schwarz & 'k' \\ \hline + \end{tabular} + \end{minipage} + \vspace{0pt} + \begin{minipage}[t]{0.3\textwidth} + \vspace{0pt} + \begin{tabular}{lc} + \textbf{Markersymbol} & \textbf{K\"urzel} \\ \hline + Kreis & 'o'\\ + Stern & '*' \\ + Plus & '+' \\ + Kreuz & 'x' \\ + Diamant & 'd' \\ + Pentagramm & 'p' \\ + Hexagramm & 'h' \\ + Quadrat & 's' \\ + Dreieck & '\^{}' \\ + Umgekehrtes Dreieck & 'v' \\ + Dreieck links & '$<$'\\ + Dreieck rechts & '$>$'\\\hline + \end{tabular} + \end{minipage} +\end{table} + +\subsection{Ver\"andern von Linieneigenschaften} + +Will man die Eigenschaften des Linienplots selbst bestimmen, so +empfiehlt es sich das dem \code{plot} Befehlt mitzuteilen. Folgender +Aufruft erzeugt einen roten Linienplot mit gepunkteter Linie der +St\"arke 1.5 und Strenmarkern and den Positionen der +Datenpunkte. Zus\"atzlich wird noch die Eigenschaft +\codeterm{displayname} gesetzt, um dem Linienplot einen Namen zu +geben, der in einer Legende verwendet werden kann. +\begin{lstlisting} + x = 0:0.1:2*pi; + y = sin(x); + plot( x, y, 'color', 'r', 'linestyle', ':', 'marker', '*', 'linewidth', 1.5, 'displayname', 'plot 1') +\end{lstlisting} + +\subsection{Ver\"andern von Achseneigenschaften} + +Das erste, was ein Plot braucht ist eine Achsenbeschriftung. Mithilfe +der Funktionen \code{xlabel('Time [ms]')} und \code{ylabel('Voltage + [V]')} k\"onnen diese gesetzt werden. Standardm\"a{\ss}ig setzt +Matlab die Grenzen der x- und y-Achse so, dass die Daten +hineinpassen. Dabei wird meist auf den n\"achsten ganzzahligen Wert +aufgerundet. Will man diese manuell bestimmen, dann benutzt man die +Funktionen \code{xlim} und \code{ylim}. Diese erwarten als Argument +einen 2-elementigen Vektor mit dem Minimum und dem Maximum der +jeweiligen Achse. Tabelle \ref{plotaxisprops} listet weitere h\"aufig +genutzte Einstellungen der Achsen. Um sie zu ver\"andern benutzt man +die Funktion \code{set}. Listing \ref{niceplotlisting} Zeile 15 zeigt +wie sie verwendet wird. Die Funktion erwartet als erstes Argument ein +sogenanntes Handle der Achse, dieses wird gefolgt von einer beliebig +langen Reihe von Eigenschaft-Wert Paaren. Soll z.B. das Gitternetz der +x-Achse gezeigt werden, wird die Eigenschaft \codeterm{XGrid} auf den +Wert \codeterm{'on'} gesetzt: \code{set(gca, 'XGrid', 'on');}. Das +erste Argument ist ein Aufruf der Funktion \code{gca}, +``get-current-axis'' und ist das Achsenhandle. + +\begin{table}[tp] + \titlecaption{Ausgew\"ahlte Eigenschaften der Achse. Alle Eigenschaften der Achse findet man in der Hilfe oder im \codeterm{Property Editor}, siehe Abbildung \ref{ploteditorfig}. Wenn es eine definierte Auswahl von Einstellungen gibt, z.B. bei der Eigenschaft \codeterm{Box}, dann ist die Standardeinstellungen, als erstes gelistet.}{}\label{plotaxisprops} + \begin{tabular}{l|p{5cm}|p{5cm}} + \textbf{Eigenschaft} & \textbf{Beschreibung} & \textbf{Optionen} \\ \hline + \codeterm{Box} & Definiert, ob der Rahmen der Achse vollst\"andig gezeichnet wird. & $\{'on'|'off'\}$ \\ + \codeterm{Color} & Hintergrundfarbe des Koordinatensystems. & Beliebige RGB, CMYK ... Werte. \\ + \codeterm{Fontname} & Der Name der Schriftart. & Im System installierte Schriften. \\ + \codeterm{FontSize} & Gr\"o{\ss}e der Schrift. & Skalarer Wert.\\ + \codeterm{FontUnit} & Einheit, in der die Schriftgr\"{\ss}e bestimmt wird. & $\{'points' | 'centimeters' | 'inches', ...\}$\\ + \codeterm{FontWeight} & Fett- oder Normalsatz der Schrift. & $\{normal' | 'bold'\}$\\ + & 'd' \\ + \codeterm{TickDir} & Richtung der Teilstriche auf der Achse. & $\{'in' | 'out'\}$\\ + \codeterm{TickLength} & L\"ange der Haupt- und Nebenteilstriche & \\ + \codeterm{X-, Y-, ZDir} & Richtung der Achsskalierung. & $\{'normal' | 'reversed'\}$\\ + \codeterm{X-, Y-, ZGrid} & Sollen Gitternetzlinien gezeigt werden? & $\{'off'|'on'\}$ \\ + \codeterm{X-, Y-, ZScale} & Lineare oder logarithmische Skalierung der Achse. & $\{'linear' | 'log'\}$\\ + \codeterm{X-, Y-, ZTick} & Position der Teilstriche auf der Achse. & Vektor mit Positionen.\\ + \codeterm{X-, Y-, ZTickLabel} & Beschriftung der Teilstriche. & Vektor mit entsprechenden Zahlen oder Cell-Array mit Strings.\\ \hline + \end{tabular} +\end{table} + + +\subsection{Ver\"andern von Figure-Einstellungen} + +Wie die Achse, hat auch das \codeterm{Figure} Element eine Reihe von +Eigenschaften, die nach Bedarf gesetzt werden k\"onnen (Tabelle +\ref{plotfigureprops} listet die meistverwendeten). Um sie zu setzen +verwendet man wieder die \code{set} Funktion. Das erste Argument ist +jetzt aber eine Handle f\"ur die Abbildung, nicht das +Koordinatensystem. Statt der Funktion \code{gca} wird \code{gcf}, +``get-current-figure'' benutzt. + +\begin{table}[tp] + \titlecaption{Ausgew\"ahlte Eigenschaften der \codeterm{Figure}. Alle Eigenschaften der Achse findet man in der Hilfe con \matlab{} oder im \codeterm{Property Editor} wenn die Abbildung ausgew\"ahlt wurde (Abbildung \ref{ploteditorfig}).}{}\label{plotfigureprops} + \begin{tabular}{l|p{5cm}|p{5cm}} + \textbf{Eigenschaft} & \textbf{Beschreibung} & \textbf{Optionen} \\ \hline + \codeterm{Color} & Hintergrundfarbe der Zeichenfl\"ache. & Beliebige RGB, CMYK ... Werte. \\ + \codeterm{PaperPosition} & Posistion der Abbildung auf dem Papier & 4-elementiger Vektor mit den Positionen der linken-unteren, und rechten-oberen Ecke. \\ + \codeterm{PaperSize} & Gr\"o{\ss}e der des Papiers. & 2-elementiger Vektor mit der Papiergr\"o{\ss}e.\\ + \codeterm{PaperUnits} & Einheit, in der die Papiergr\"{\ss}e bestimmt wird. & $\{'inches' | 'centimeters' | 'normalized' | 'points'\}$\\ + \codeterm{Visible} & Hilfreich, wenn ein Plot aus Performanzgr\"unden nicht auf dem Bildschirm gezeigt, sondern direkt gespeichert werden soll. & $\{'on' | 'off'\}$\\ \hline + \end{tabular} +\end{table} + +Das folgende Listing \ref{niceplotlisting} zeigt wie ein Skript +aussehen k\"onnte, das die notwendigen Anpassungen vornimmt. Bei jedem +Aufruf des Skripts wird exakt der gleiche Plot (Abbildung +\ref{spikedetectionfig}) erstellt und gespeichert. Erw\"ahnenswert +sind hier vor allem die Zeilen 2 und 3 in denen die Gr\"o{\ss}e der +Abbildung in Zentimetern definiert wird. In Zeile 16 wird die +Abbildung dann in genau der angegebenen Gr\"o{\ss}e im ``pdf'' Format +gespeichert. Dazu wird die Funktion \code{saveas} verwendet, die als +erstes Argument wieder ein Handle auf die Figure erwartet. Das zweite +Argument ist der Dateiname, und zuletzt muss das gew\"unschte Format +(Box \ref{graphicsformatbox}) angegeben werden. +\clearpage \begin{lstlisting}[caption={Skript zur Erstellung des Plots in Abbildung \ref{spikedetectionfig}.}, label=niceplotlisting] -fig = figure(); +figure() set(gcf, 'PaperUnits', 'centimeters', 'PaperSize', [11.7 9.0]); set(gcf, 'PaperPosition',[0.0 0.0 11.7 9.0], 'Color', 'white') hold on @@ -243,7 +373,7 @@ xlabel('time [s]', 'fontname', 'MyriadPro-Regular', 'fontsize', 10) ylabel('potential [mV]', 'fontname', 'MyriadPro-Regular', 'fontsize', 10) title('pyramidal cell', 'fontname', 'MyriadPro-Regular', 'fontsize', 12) set(gca, 'TickDir','out', 'linewidth', 1.5, 'fontname', 'MyriadPro-Regular') -saveas(fig, 'spike_detection.pdf', 'pdf') +saveas(gcf, 'spike_detection.pdf', 'pdf') \end{lstlisting} \begin{figure} @@ -253,11 +383,61 @@ saveas(fig, 'spike_detection.pdf', 'pdf') gespeichert.}\label{spikedetectionfig} \end{figure} - Neben den Standard Linienplots gibt es eine ganze Reihe weiterer -M\"oglichkeiten Daten zu Visualisieren. Mathworks zeigt unter -\url{http://www.mathworks.de/discovery/gallery.html} viele Beispiele -mit zugeh\"origem Code. +M\"oglichkeiten Daten zu Visualisieren. Mathworks zeigt auf seiner +Homepage viele Beispiele mit zugeh\"origem Code +\url{http://www.mathworks.de/discovery/gallery.html}. + + +\begin{ibox}[t]{\label{graphicsformatbox}Dateiformate f\"ur Abbildungen.} + Im Wesentlichen gibt es zwei Arten von Dateiformaten f\"ur + Graphiken. + \begin{enumerate} + \item \determ{Rastergraphik} (\enterm{Bitmap}) + \item \determ{Vektorgraphik} (\enterm{vector graphics}) + \end{enumerate} + + Bei Rastergraphiken wird f\"ur jeden Bildpunkt (jedes Pixel) der + aktuelle Farbwert angegeben. Sie sind vor allem f\"ur Fotos + geeignet. Im Gegensatz dazu werden bei Vektorgraphiken die + Abbildungen durch sogenannte Primitive (Linien, Kreise, Polygone + ...) beschrieben. Der Vorteil der Vektorgraphiken + ist die Skalierbakeit ohne Qualit\"atsverlust.\\ + + + \begin{minipage}[t]{0.42\textwidth} + \includegraphics[width=\textwidth]{VectorBitmap.pdf} + \small{by Darth Stabro at en.wikipedia.org} + \vspace{0.1cm} + \end{minipage} + \begin{flushright} + \begin{minipage}[t]{0.5\textwidth} + \vspace{-9.5cm} + Von \matlab{} unterst\"utzte Formate\footnote{Auswahl, mehr Information in der Hilfe zu \code{saveas}}:\\ + \begin{tabular}{l|c|l} + \textbf{Format} & \textbf{Typ} & \code{saveas} Argument} \\ \hline + pdf & Vektor & \codeterm{'pdf'} \\ + eps & Vektor & \codeterm{'eps','epsc'} \\ + SVG & Vektor & \codeterm{'svg'} \\ + PS & Vektor & \codeterm{'ps', 'psc'} \\ + jpg & Bitmap & \codeterm{'jpeg'} \\ + tif & Bitmap & \codeterm{'tiff', 'tiffn'} \\ + png & Bitmap & \codeterm{'png'} \\ + bmp & Bitmap & \codeterm{'bmp'} \\ + \end{tabular} + \end{minipage} + \end{flushright} + + Wenn aus \matlab{} heraus Graphiken gespeichert werden sollen, dann + ist es meist sinnvoll sie als Vektorgraphik zu speichern. Im + Zweifelsfall k\"onnen diese sp\"ater in Rastergraphiken umgewandelt + werden. Der Weg von einer Rastergraphik zu einer Vektorgraphik ist + nich verlustfrei m\"oglich. Das Speichern von Abbildungen mit sehr + vielen graphischen Elementen (z.B. ein Rasterplot mit tausenden von + Aktionspotentialen) ist als Rastergraphik allerdings deutlich + schneller und speichereffizienter. +\end{ibox} + \subsection{Fazit}