Archiv verlassen und diese Seite im Standarddesign anzeigen : Diagramme mit PSTricks: x-Achse und zwei y-Achsen?
Moin!
Im Zuge unserer Abschlussprüfung fertigen wir unsere Dokumentation aus Qualitätsgründen natürlich mit LaTeX an. ;)
In dieser werden diverse Diagramme vorkommen und zwar ganz bestimmte.
(Damit man weiss, wie ich das meine, habe ich so ein Diagramm wie ich es mir vorstelle, mal von Hand gemalt und unten als JPG angehängt --> diagramm.jpg)
Als Vorlage würde sich ja nun eigentlich das Beispiel hier anbieten, oder?
--> http://tug.org/PSTricks/pst-plot/axes1.pdf
Die Daten für die Kurven liegen uns als Zahlen in Tabellenform vor, es ist also keine Funktion o.ä.
Und hierbei komm ich auch schon zu meiner eigentlichen Frage:
Wie kann ich das bewerktstelligen, dass die x-Achse(Druck) mit der y-Achse(Länge) die eine Kurve zeichnet und gleichzeitig die zweite y-Achse(Masse) mit der x-Achse(Länge) die andere Linie dazu zeichnet?
Ich habe bisher leider kein solches Praxisbeispiel finden können... weder im Web noch im Buch(mir liegt das sehr gute(!) Buch "PSTricks von Herbert Voß" in der 4.Auflage vor).
Habe ich was übersehen und es steht doch irgendwo?
Wer kann mir da helfen? Bin zwar ein wenig mit LaTeX vertraut, aber PSTricks ist Neuland für mich - d.h., bitte langsam und deutlich sprechen. :D
Hallo Du hier,
bei tug.org warst du schon richtig. suche mal nach multiaxes
http://tug.org/PSTricks/main.cgi?file=pst-plot/psaxes
juergen
Stimmt, hast recht. Habe ich irgendwie übersehen, danke. :)
Nun habe ich nun ein weiteres Problem:
Ich möchte die Achsen beschriften, jedoch macht mir hierbei eine Achse Probleme. Die Achse stellt die "Kosten K" dar und die Einheit ist Euro... und genau dieses Eurozeichen lässt sich bei meinen Versuchen nicht setzen.
Kann mir nicht vorstellen, dass die Mathe-Umgebung für die eckigen Klammern dort Probleme machen könnten...
Hat jemand ne Idee?
Hier mein Versuchsdiagramm:
\documentclass[12pt,a4paper]{article}%
\usepackage{pstricks-add}%,pstricks,pst-plot}
\usepackage{europs} % Paket für das Euro-Zeichen
\begin{document}
\begin{pspicture}(-0.5,-0.5)(12,8)
\psaxes[ticks=all,subticks=2,Dx=1000,dx=1.5,Dy=20000,dy=1]{->}(0,0)(-0.5,-0.5)(12,8)
\rput{0}(-1.2,8.5){Kosten $K$}
\rput{0}(-1.2,8){ $[$\EUR$]$ }
\end{pspicture}
\end{document}
... kleiner Nachtrag, um die Sache zu präzisieren:
Das Euro-Symbol funktioniert in der normalen Text-Umgebung einwandfrei.
Auch in einer Tabellenumgebung mit "\begin{tabular}..."
Es tritt nur unter "\begin{pstricks}..." dieses Problem auf. Ein weiterer Unterschied wäre, dass ich den Text und die Tabelle mit jeweils dem Euro-Zeichen mit latex2pdf ausgeben kann, und bei der pstricks-Sache latex2dvi nutzen muss, damit die Ausgabe funktioniert.
Könnte an der Stelle die Ursache liegen?
Der dvi-Viewer "YAP" sagt mir: "Not all fonts could be loaded."
Tja, das merk ich selber - aber was mach ich nun dagegen?
... kleiner Nachtrag, um die Sache zu präzisieren:
Das Euro-Symbol funktioniert in der normalen Text-Umgebung einwandfrei.
Auch in einer Tabellenumgebung mit "\begin{tabular}..."
Es tritt nur unter "\begin{pstricks}..." dieses Problem auf. Ein weiterer Unterschied wäre, dass ich den Text und die Tabelle mit jeweils dem Euro-Zeichen mit latex2pdf ausgeben kann, und bei der pstricks-Sache latex2dvi nutzen muss, damit die Ausgabe funktioniert.
Könnte an der Stelle die Ursache liegen?
Der dvi-Viewer "YAP" sagt mir: "Not all fonts could be loaded."
Tja, das merk ich selber - aber was mach ich nun dagegen?
Paket eurosym nehmen und dann ohnehin \uput
\uput[170](0,8){\tabular{@{}c@{}}Kosten $K$\\{[\euro]}\endtabular}
Herbert
Vielen Dank, Herbert!
Darauf wäre ich nie gekommen. Sieht komplex und schwierig aus die Lösung.
Hach, es ist eine schöne Freude, die man hat wenn etwas endlich funktioniert. :)
Hallo Du hier,
bei tug.org warst du schon richtig. suche mal nach multiaxes
http://tug.org/PSTricks/main.cgi?file=pst-plot/psaxes
juergen
Nachdem nun mein eines Diagramm so funktioniert wie ich es mir denke(ich weiß, ich bin langsam :(), habe ich mich wieder an dieses Diagramm gemacht mit den erwähnten 2 y-Achsen.
Die beiden im Link erwähnten Beispiele haben mir so weit geholfen, dass ich mal das Koordinatensystem erstellen konnte.
Jedoch begreife ich nicht mal in minimalen Ansätzen, wie ich es hinbekomme, dass die Koordinaten der zweite, blauen Linie (siehe Minimalbeispiel/Kommentar) Bezug auf die rechte y-Achse nehmen, anstatt wie standardmässig auf die linke.
Die erste, rote Linie soll jedoch weiterhin die linke y-Achse als Bezug für ihre y-Werte der Punkte nutzen.
Hinzukommt, dass ich eine Linie haben möchte, die verrundet durch die Punkte verläuft und nicht so eckig wie aus dem Beispiel-Link. Daher nutze ich auch \psecurve.
Wäre sehr froh, wenn mir jemand zeigen könnte, wie ich das hinbekommen...
Denn ich selber bin nach stunden- bis tagelangem Literatur wälzen und Google strapazieren absolut ratlos. :confused:
\documentclass[12pt,a4paper]{article}%
\usepackage{pstricks-add,pstricks,,pst-plot,pst-eps,graphicx}
\begin{document}
\thispagestyle{empty}
\begin{pspicture}(8,10)
\psaxes[xAxis=false,tickstyle=bottom,subticks=2,Dy=500,dy= 1]{->}(0,0)(8,10)
\psaxes[xAxis=false,tickstyle=top,subticks=2,Dy=2000,dy=1]{->}(8,0)(8,10)
\psaxes[yAxis=false,tickstyle=bottom,subticks=2,Dx=1000,dx =1](0,0)(8,10)
\uput[170](0,10){linke y-Achse}
\uput[170](11,10){rechte y-Achse}
\uput[170](8.5,-1){x-Achse}
\psecurve[showpoints=true,linecolor=red,linewidth=0.75pt]% Diese Kurve soll Bezug auf die "linke y-Achse" haben
(0.5,0.5)(0.5,0.5)(1,1)(1.5,1.25)(2,1.4)(2.5,1.5)( 3,1.65)(3.5,1.75)(4,1.8)(4.5,1.85)(5,1.9)(5.5,1.92 5)(6,2.25)(6.5,2.75)(7,3)(7,3)
\psecurve[showpoints=true,linecolor=blue,linewidth=0.75pt]% Diese Kurve soll Bezug auf die "rechte y-Achse" haben
(0.5,0.5)(0.5,0.5)(1,2)(1.5,2.25)(2,3.4)(2.5,3.9)( 3,4.65)(3.5,5.75)(4,6.8)(4.5,7.85)(5,7.9)(5.5,8.92 5)(6,9.25)(6.5,9.75)(7,9.9)(7,9.9)
\end{pspicture}
\end{document}
P.S.:
Was mir noch auffiel ist, dass man bei der Funktion \psecuve den ersten und letzten Punkt immer jeweils doppelt angeben muss, damit er dargestellt wird.
Warum ist das so?
Hm ok... nach tagelangem Grübeln bin ich wohl selber auf die Lösung gestossen.
Jedenfalls mach ich das jetzt einfach so.
Da man ja schon bei der ersten Kurve nicht die Werte der y-Achse für die Koordinatenpunkte nehmen konnte, wird das wohl auch bei der anderen Achse so sein, dachte ich mir dann irgendwann.
Für Latex ist die x-Achse null und das obere Ende des Diagramms 100.
In der Breite dann genauso, bloß von links nach rechts in meinem Fall - links Null und rechts 100.
Die Skalen an den Achsen dienen dann wohl nur als Beschriftung für den Betrachter des grafischen Outputs, aber nicht für Latex vom die Position der Punkte auf den Kurven zu bestimmen.
Die x- und y-Werte der Punkte auf den Kurven muss man dann eben umrechnen, auf einen Wert zwischen 0 und 100.
Ich weiss nicht ob das auch so vorgesehen ist, aber auf jeden Fall funktioniert es bei mir auf diesem Wege.
Wobei ich sagen muss, dass mir das ganz zwar Spass macht, aber doch recht aufwendig ist.
Ich hatte die Wahl zwischen der Anwendung Asymptote (klick (http://www.artofproblemsolving.com/Wiki/index.php/Asymptote_%28Vector_Graphics_Language%29)) oder eben PSTricks. Meine Überlegung war, dass ich lieber PSTricks verwende, da ich mich mit Latex schon ein wenig auskannte, aber Asymptote als eigene Programmiersprache hätte von Grund auf neu erlernen müssen.
Naja, ein wirklich Erfolg sieht anders aus - aber zumindest müsste mich das erstmal zum gewünschten Ergebnis bringen. :)
Danke auch nochmals für eure unermüdliche Hilfe hier!
Nachdem nun mein eines Diagramm so funktioniert wie ich es mir denke(ich weiß, ich bin langsam :(), habe ich mich wieder an dieses Diagramm gemacht mit den erwähnten 2 y-Achsen.
Die beiden im Link erwähnten Beispiele haben mir so weit geholfen, dass ich mal das Koordinatensystem erstellen konnte.
Jedoch begreife ich nicht mal in minimalen Ansätzen, wie ich es hinbekomme, dass die Koordinaten der zweite, blauen Linie (siehe Minimalbeispiel/Kommentar) Bezug auf die rechte y-Achse nehmen, anstatt wie standardmässig auf die linke.
Die erste, rote Linie soll jedoch weiterhin die linke y-Achse als Bezug für ihre y-Werte der Punkte nutzen.
Hinzukommt, dass ich eine Linie haben möchte, die verrundet durch die Punkte verläuft und nicht so eckig wie aus dem Beispiel-Link. Daher nutze ich auch \psecurve.
Wäre sehr froh, wenn mir jemand zeigen könnte, wie ich das hinbekommen...
Denn ich selber bin nach stunden- bis tagelangem Literatur wälzen und Google strapazieren absolut ratlos. :confused:
\documentclass[12pt,a4paper]{article}%
\usepackage{pstricks-add,pstricks,,pst-plot,pst-eps,graphicx}
\begin{document}
\thispagestyle{empty}
\begin{pspicture}(8,10)
\psaxes[xAxis=false,tickstyle=bottom,subticks=2,Dy=500,dy= 1]{->}(0,0)(8,10)
\psaxes[xAxis=false,tickstyle=top,subticks=2,Dy=2000,dy=1]{->}(8,0)(8,10)
\psaxes[yAxis=false,tickstyle=bottom,subticks=2,Dx=1000,dx =1](0,0)(8,10)
P.S.:
Was mir noch auffiel ist, dass man bei der Funktion \psecuve den ersten und letzten Punkt immer jeweils doppelt angeben muss, damit er dargestellt wird.
Warum ist das so?
\psaxes[subticks=2,Dy=500,dy=1,Dx=1000,dx=1]{->}(0,0)(8,10)
\psaxes[xAxis=false,subticks=2,Dy=2000,dy=1]{->}(8,0)(8,10)
reicht auch. Du hast den Sinn von \psecurve nicht verstanden; was du willst, ist einfach
\pscurve
Herbert
Powered by vBulletin® Version 4.2.5 Copyright ©2024 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.