Anzeige:
Ergebnis 1 bis 9 von 9

Thema: Diagramme mit PSTricks: x-Achse und zwei y-Achsen?

  1. #1
    Registrierter Benutzer
    Registriert seit
    23.07.2007
    Beiträge
    21

    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.

  2. #2
    Registrierter Benutzer
    Registriert seit
    28.12.2006
    Beiträge
    330
    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

  3. #3
    Registrierter Benutzer
    Registriert seit
    23.07.2007
    Beiträge
    21
    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:

    Code:
    \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}
    Geändert von erhier (25-12-2007 um 14:40 Uhr)

  4. #4
    Registrierter Benutzer
    Registriert seit
    23.07.2007
    Beiträge
    21
    ... 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?

  5. #5
    Registrierter Benutzer Avatar von voss
    Registriert seit
    10.04.2005
    Beiträge
    5.045
    Zitat Zitat von erhier Beitrag anzeigen
    ... 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
    Code:
    \uput[170](0,8){\tabular{@{}c@{}}Kosten $K$\\{[\euro]}\endtabular}
    Herbert

  6. #6
    Registrierter Benutzer
    Registriert seit
    23.07.2007
    Beiträge
    21
    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.

  7. #7
    Registrierter Benutzer
    Registriert seit
    23.07.2007
    Beiträge
    21
    Zitat Zitat von lupus68 Beitrag anzeigen
    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.

    Code:
    \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.925)(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.925)(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?

  8. #8
    Registrierter Benutzer
    Registriert seit
    23.07.2007
    Beiträge
    21

    Post

    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) 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!

  9. #9
    Registrierter Benutzer Avatar von voss
    Registriert seit
    10.04.2005
    Beiträge
    5.045
    Zitat Zitat von erhier Beitrag anzeigen
    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.

    Code:
    \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?
    Code:
      \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

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •