PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Diagramm mit mehreren Y-Achsen - Verbesserungsvorschläge?



Maschinenbauer
18-07-2011, 09:29
Ich habe eine Datei mit mehreren Messwerten:
1. Spalte: Zeit
2. Spalte: Strom
3. Spalte: Spannung
4. Spalte: Temperatur

Ich möchte alle Werte in einem Diagramm mit mehreren Y-Achsen darstellen (alle 3 möglichst auf der linken Seite platziert mit eigener Skalierung).
Es soll ein Liniendiagramm sein ohne Anzeige von Punkten.
Eine Legende soll optional auch (außerhalb des Diagramms) angezeigt werden.

Ich habe mir bisher PSTricks und TikZ angeschaut.

Mit PSTricks habe ich es hinbekommen (wobei es mich eher an malen erinnert wie an Plotten eines Diagramms).

Allerdings ist das Diagramm nicht richtig zentriert und scheint über seine Grenzen hinaus zu gehen (bzw. der Text läuft in den Diagrammbereich hinein).
Wie verhindere ich das?



\documentclass{article}
\usepackage{pstricks-add}


\begin{document}

\readdata{\data}{daten.txt}

Beispieltext Beispieltext Beispieltext Beispieltext Beispieltext Beispieltext Beispieltext Beispieltext Beispieltext Beispieltext Beispieltext Beispieltext.

\begin{figure}[h]

\centering %ohne centering sieht es sogar besser aus ?!?!?!?

\begin{pspicture}

% X-Achse: 0-1000 auf 0-10cm
\psaxes[yAxis=false,Ox=0,Dx=100,dx=1]{->}(2,0)(2,0)(13,11)[Zeit \lbrack s\rbrack,0][,0]

% Y-Achse: 0-10 auf 0-10cm
\psaxes[xAxis=false,Oy=-1,Dy=2,dy=1,tickcolor=green,linecolor=green]{->}(0,-1)(0,-1)(13,10)[,0][,0]
% Y-Achse: 0-100 auf 0-10cm
\psaxes[xAxis=false,Oy=-10,Dy=10,dy=1,tickcolor=magenta,linecolor=magenta]{->}(1,-1)(1,-1)(13,10)[,0][,0]
% Y-Achse 0-100 auf 0-10cm
\psaxes[xAxis=false,Oy=-10,Dy=10,dy=1,tickcolor=yellow,linecolor=yellow]{->}(2,-1)(2,-1)(13,10)[,0][,0]

\pstScalePoints(0.01,0.1){200 add}{}
\listplot[linecolor=magenta,linewidth=1.5pt,plotNoMax=3,plot No=1]{\data}
\pstScalePoints(0.01,0.5){200 add}{}
\listplot[linecolor=green,linewidth=1.5pt,plotNoMax=3,plotNo =2]{\data}
\pstScalePoints(0.01,0.1){200 add}{}
\listplot[linecolor=yellow,linewidth=1.5pt,plotNoMax=3,plotN o=3]{\data}
\pstScalePoints(1,1){}{}

\rput[l]{30}(0,10.2){Strom $\mathrm{[A]}$}
\rput[l]{30}(1,10.2){Spannung $\mathrm{[V]}$}
\rput[l]{30}(2,10.2){Temperatur [$^{\circ}\mathrm{C}$]}

\end{pspicture}

\caption{Beispiel Diagramm}

\end{figure}

Beispieltext Beispieltext Beispieltext Beispieltext Beispieltext Beispieltext Beispieltext Beispieltext Beispieltext Beispieltext Beispieltext Beispieltext.

\end{document}


Wäre es mit TikZ einfacher gegangen?
Hat da jemand einen Beispielcode für meinen Anwendungsfall?

Ansonsten: Wie kann ich die Anzeige mit PSTricks noch etwas professioneller aussehen lassen?

voss
18-07-2011, 21:48
Ich habe eine Datei mit mehreren Messwerten:
1. Spalte: Zeit
2. Spalte: Strom
3. Spalte: Spannung
4. Spalte: Temperatur

Ich möchte alle Werte in einem Diagramm mit mehreren Y-Achsen darstellen (alle 3 möglichst auf der linken Seite platziert mit eigener Skalierung).
Es soll ein Liniendiagramm sein ohne Anzeige von Punkten.
Eine Legende soll optional auch (außerhalb des Diagramms) angezeigt werden.


Den Platz musst du schon mal reservieren, wenn er größer als 10cm*10cm ist ... Die gewählten Farben sind aber mehr als gewöhnungsbedürftig ...



\documentclass{article}
\usepackage{pstricks-add}
\usepackage{graphicx}


\begin{document}

\readdata{\data}{/tmp/Download/daten.txt}

Beispieltext Beispieltext Beispieltext Beispieltext Beispieltext Beispieltext Beispieltext Beispieltext Beispieltext Beispieltext Beispieltext Beispieltext.

\begin{figure}[!htb]
\resizebox{\linewidth}{!}{%
\begin{pspicture}(-1,-1)(14.5,11.5)
% X-Achse: 0-1000 auf 0-10cm
\psaxes[yAxis=false,Ox=0,Dx=100,dx=1]{->}(2,0)(2,0)(13,11)[Zeit \lbrack s\rbrack,0][,0]
% Y-Achse: 0-10 auf 0-10cm
\psaxes[xAxis=false,Oy=-1,Dy=2,dy=1,tickcolor=green,linecolor=green]{->}(0,-1)(0,-1)(13,10)[,0][,0]
% Y-Achse: 0-100 auf 0-10cm
\psaxes[xAxis=false,Oy=-10,Dy=10,dy=1,tickcolor=magenta,
linecolor=magenta]{->}(1,-1)(1,-1)(13,10)[,0][,0]
% Y-Achse 0-100 auf 0-10cm
\psaxes[xAxis=false,Oy=-10,Dy=10,dy=1,tickcolor=yellow,linecolor=yellow]{->}(2,-1)(2,-1)(13,10)[,0][,0]

\pstScalePoints(0.01,0.1){200 add}{}
\listplot[linecolor=magenta,linewidth=1.5pt,plotNoMax=3,plot No=1]{\data}
\pstScalePoints(0.01,0.5){200 add}{}
\listplot[linecolor=green,linewidth=1.5pt,plotNoMax=3,plotNo =2]{\data}
\pstScalePoints(0.01,0.1){200 add}{}
\listplot[linecolor=yellow,linewidth=1.5pt,plotNoMax=3,plotN o=3]{\data}
\pstScalePoints(1,1){}{}

\rput[l]{30}(0,10.2){Strom $\mathrm{[A]}$}
\rput[l]{30}(1,10.2){Spannung $\mathrm{[V]}$}
\rput[l]{30}(2,10.2){Temperatur [$^{\circ}\mathrm{C}$]}

\end{pspicture}}

\caption{Beispiel Diagramm}

\end{figure}

Beispieltext Beispieltext Beispieltext Beispieltext Beispieltext Beispieltext Beispieltext Beispieltext Beispieltext Beispieltext Beispieltext Beispieltext.

\end{document}


HErbert