Ich möchte meine Daten plotten, am liebsten wie im Titel angegeben mit zwei X- (oben und unten) und einer Y-Achse. Auf der oberen X-Achse (X2) soll die Frequenz logarithmisch aufgetragen werden. Ansonsten werden Realteil (X1) und Imaginärteil (Y) aufgetragen. Hier ist mein bisheriger Code: Open in Online-Editor
\documentclass[paper=a4,ngerman,xcolor=dvipsnames]{article} \usepackage[ngerman]{babel} \usepackage[utf8]{inputenc} \usepackage[]{pgfplots} \usepackage[]{tikz} \usepackage{siunitx} \pgfplotscreateplotcyclelist{mycolorlist}{ blue!01!green,every mark/.append style={fill=blue!10!black},mark=+\\ } \pgfplotscreateplotcyclelist{mycolorlist2}{ blue!70!green,every mark/.append style={fill=blue!10!black},mark=+\\ } \pgfplotsset{compat=1.9} \pgfplotsset{every axis label/.append style={font=\large}} \pgfplotsset{every tick label/.append style={font=\large}} \begin{document} \begin{figure} \begin{tikzpicture} \begin{axis}[ grid=both, axis equal, width=12cm, height=9cm, xtick pos=left, ytick pos=left, xlabel={x1}, ylabel={y1}, legend style={at={(0.97,0.03)},anchor=south east, cells={anchor=west}}, legend style={font=\footnotesize}, cycle list name=mycolorlist, ] \addplot table [x=b,y expr=-\thisrow{c}]{myData.txt}; \legend{Zyklus 0} \end{axis} \begin{semilogxaxis}[ width=12cm, height=9cm, cycle list name=mycolorlist2, axis x line*=top, xlabel={x2} ] \addplot table [y=c,x=a]{myData.txt}; \end{semilogxaxis} \end{tikzpicture} \end{figure} \end{document} Hier ist ein Auszug aus
Beim Ausführen des Codes wird folgender Plot ausgegeben: Zwei Probleme treten auf. Zum einen werden zwei übereinander liegende Y-Achsen erstellt, jedoch soll es nur eine gemeinsame geben. Zum anderen liegt der erste Wert der blauen Linie nur auf der gleichen Höhe wie der erste Wert der grünen Linie. Diese sollen in einem Punkt liegen. Das Problem hierfür ist |
Wenn Du keine zweite y-Achse willst, dann kannst Du diese natürlich mit Open in Online-Editor
\begin{filecontents*}{myData.txt} Number a b c Significance Time/s 1 1.1307e+03 3.7337e-01 -5.3821e-02 1.000 0.0 2 1.4176e+03 3.6739e-01 -5.1699e-02 1.000 2.1 3 1.7774e+03 3.5992e-01 -4.9973e-02 1.000 3.0 4 2.2284e+03 3.5299e-01 -4.7547e-02 1.000 4.0 5 2.7940e+03 3.4617e-01 -4.5755e-02 1.000 4.9 6 3.5030e+03 3.3947e-01 -4.4076e-02 1.000 5.8 7 4.3920e+03 3.3355e-01 -4.1470e-02 1.000 6.7 8 5.5066e+03 3.2729e-01 -4.0056e-02 1.000 7.7 9 6.9041e+03 3.2171e-01 -3.8309e-02 1.000 8.6 10 8.6563e+03 3.1575e-01 -3.6648e-02 1.000 9.5 11 1.0853e+04 3.0963e-01 -3.4914e-02 1.000 10.5 12 1.3607e+04 3.0393e-01 -3.2820e-02 0.999 11.5 13 1.7061e+04 2.9772e-01 -3.0281e-02 1.000 12.5 14 2.1390e+04 2.9143e-01 -2.7832e-02 1.000 13.5 15 2.6819e+04 2.8524e-01 -2.4287e-02 1.000 14.4 16 3.3625e+04 2.7831e-01 -1.9335e-02 0.999 15.4 17 4.2159e+04 2.7209e-01 -1.3779e-02 1.000 16.4 18 5.2858e+04 2.6484e-01 -6.0846e-03 0.999 17.4 19 6.6272e+04 2.5688e-01 4.1042e-03 0.999 18.4 20 8.3091e+04 2.5016e-01 1.8241e-02 0.999 19.4 \end{filecontents*} \documentclass[paper=a4,ngerman,xcolor=dvipsnames]{article} \usepackage[ngerman]{babel} \usepackage[utf8]{inputenc} \usepackage[]{pgfplots} \pgfplotsset{compat=1.14} \usepackage{siunitx} \pgfplotscreateplotcyclelist{mycolorlist}{ blue!01!green,every mark/.append style={fill=blue!10!black},mark=none\\ } \pgfplotscreateplotcyclelist{mycolorlist2}{ blue!70!green,every mark/.append style={fill=blue!10!black},mark=none\\ } \pgfplotsset{every axis label/.append style={font=\large}} \pgfplotsset{every tick label/.append style={font=\large}} \begin{document} \begin{figure} \begin{tikzpicture} \begin{axis}[ grid=both, axis equal, width=12cm, height=9cm, xtick pos=left, ytick pos=left, xlabel={x1}, ylabel={y1}, legend style={at={(0.97,0.03)},anchor=south east, cells={anchor=west}}, legend style={font=\footnotesize}, cycle list name=mycolorlist, %ymin=-0.06, %ymax=0.06, %xmin=0.24, %xmax=0.38, ] \addplot table [x=b,y expr=-\thisrow{c}]{myData.txt}; \legend{Zyklus 0} \end{axis} \begin{semilogxaxis}[ width=12cm, height=9cm, cycle list name=mycolorlist2, axis x line*=top, axis y line=none, xlabel={x2}, %ymin=-0.06, %ymax=0.06, %xmin=5E2, %xmax=1E5, ] \addplot table [y=c,x=a]{myData.txt}; \end{semilogxaxis} \end{tikzpicture} \end{figure} \end{document} Sinnvoller wäre ggf. beide y-Achsen identisch einzuteilen (siehe auskommentierte beantwortet 22 Dez '16, 09:25 saputello Hallo, vorneweg möchte ich mich für die schnelle und umfassende Antworten bedanken! 'axis y line=none' erfüllt den Zeck zur Lösung des Problems der sich überlagernden Y-Achsen! Deine Kurve weicht von meiner ab, da ich nur einen Teil aus myData.txt eingefügt habe. Ich wollte keine 100 Zeilen mit Daten hochladen. Mein Ziel ist es einen Nyquistplot zu erzeugen. Dieser hat aber keine Übersicht über die Frequenz, deshalb die zweite X-Achse. Ich will also die zusammenhängenden Werte für x1,x2 und x wie folgt (exemplarisch) plotten: 'addplot table [x1=b,y expr=-thisrow{c},x2=a]{myData.txt};'
(22 Dez '16, 13:47)
jukebox
So, der Daumen ist oben! Ich habe der Vollständigkeit halber den gesameten Datensatz hochgeladen und Marker eingefügt. Hat mein vorheriger Kommentar mein Ziel etwas verdeutlichen können?
(22 Dez '16, 15:04)
jukebox
@jukebox: Mit dem Datensatz kann ich das im Bild gezeigte Problem nun unmittelbar nachvollziehen (und könnte theoretisch meine Antwort noch einmal anpassen, falls das notwendig wäre, was es wohl nicht ist, das Du das Prinzip offenbar verstanden hast). Vermutlich hätte es ebenso genügt, wenn Du stattdessen das Bild ausgetauscht und den Text auf das geänderte Bild angepasst hättest. Für die physikalischen Informationen (die ebenfalls in der Frage selbst als Hintergrundinfo gut untergebracht wären) sei gedankt, aber sie sagen mir eher wenig. Das notwendige Wissen blieb 25 Jahre ungenutzt.
(23 Dez '16, 08:29)
saputello
Eine Anpassung deiner Antwort wäre super. Wenn du im Code 'axis equal' auskommentierst siehst du die Grafik, wie ich sie am liebsten haben würde. Allerdings sollen die Y-Achse und X1-Achse gleich sein (also 'axis equal' enthalten). Ich hoffe, dass ich das wenigstens ein bisschen verständlich formuliert habe. Das Problem mit den überlagernden y-Achsen haben ich verstanden.
(25 Dez '16, 17:17)
jukebox
|
Willkommen auf TeXwelt!
Unabhängig von der eigentlichen Frage, sei noch darauf hingewiesen, dass
compat=1.9
auf die Verwendung einer stark veraltetenpgfplots
-Version hindeutet. Aktuell ist bei MiKTeX und bei TeX Live bzw. MacTeXpgfplots
1.14 mit diversen Verbesserungen, die aber nur genutzt werden, wenn man auchcompat=1.14
verwendet. Außerdem gehört das Setzen voncompat
unmittelbar hinter das Laden des Pakets. Das Laden vontikz
ist nach dem Laden vonpgfplots
dagegen überflüssig.