[PSTricks,fileplot] Daten logarithmisch auftragen
[PSTricks,fileplot] Daten logarithmisch auftragen
Hi Leute,
ich hoffe dies hier ist das richtige Unterforum.
Ich habe es geschafft mir eine logarithmische Skala anzulegen, doch jetzt sollen die Daten auch mittels \fileplot eben logarithmisch aufgetragen werden.
Ist dies möglich? Denn ich habe den Eindruck das plotten der Daten ist erstmal vollkommen losgelöst von den Axen.
Viele Grüße,
Klaus.
ich hoffe dies hier ist das richtige Unterforum.
Ich habe es geschafft mir eine logarithmische Skala anzulegen, doch jetzt sollen die Daten auch mittels \fileplot eben logarithmisch aufgetragen werden.
Ist dies möglich? Denn ich habe den Eindruck das plotten der Daten ist erstmal vollkommen losgelöst von den Axen.
Viele Grüße,
Klaus.
Okay,
gemäß dem Motto 'STFW' habe ich eine Lösung gefunden
Jetzt habe ich nur das Problem, dass ich auch gerne die y-Achse logarithmieren würde, dabei manche meiner y-Werte allerdings Null sind.
Das liefert natürlich einen Fehler.
Kurioser Weise hat z.B. Gnuplot damit keine Probleme. Ich nehme an, das Program regelt das irgendwie 'intern' ?
Kann ich also auch pst-plot zum Laufen kriegen, obwohl manche Werte Null sind?
Viele Grüße,
Klaus.
gemäß dem Motto 'STFW' habe ich eine Lösung gefunden
\psset{plotstyle=dots} \pstScalePoints(1,1){log}{} \rput[bl](1,1){% \readdata{\Data}{Data.dat} \listplot{\Data}
Das liefert natürlich einen Fehler.
Kurioser Weise hat z.B. Gnuplot damit keine Probleme. Ich nehme an, das Program regelt das irgendwie 'intern' ?
Kann ich also auch pst-plot zum Laufen kriegen, obwohl manche Werte Null sind?
Viele Grüße,
Klaus.
-
- Forum-Guru
- Beiträge: 252
- Registriert: Di 16. Mär 2010, 09:39
Es geht alles, wobei deine obige Lösung nicht gerade umwerfend ist ...Klaus hat geschrieben: gemäß dem Motto 'STFW' habe ich eine Lösung gefunden
Jetzt habe ich nur das Problem, dass ich auch gerne die y-Achse logarithmieren würde, dabei manche meiner y-Werte allerdings Null sind.\psset{plotstyle=dots} \pstScalePoints(1,1){log}{} \rput[bl](1,1){% \readdata{\Data}{Data.dat} \listplot{\Data}
Das liefert natürlich einen Fehler.
Kurioser Weise hat z.B. Gnuplot damit keine Probleme. Ich nehme an, das Program regelt das irgendwie 'intern' ?
Kann ich also auch pst-plot zum Laufen kriegen, obwohl manche Werte Null sind?
http://tug.org/PSTricks/main.cgi?file=p ... #logarithm
http://tug.org/PSTricks/main.cgi?file=p ... #logarithm
Herbert
Dazu liefert STFW glaube ich auch keine Garantie.CrazyHorse hat geschrieben: Es geht alles, wobei deine obige Lösung nicht gerade umwerfend ist ...

Die Beispiele sind interessant, doch scheint keines der Beispiele irgendwo einen Eintrag Null zu haben, woran der Logarithmus scheitern würde.CrazyHorse hat geschrieben: http://tug.org/PSTricks/main.cgi?file=p ... #logarithm
http://tug.org/PSTricks/main.cgi?file=p ... #logarithm
Viele Grüße,
Klaus.
-
- Forum-Guru
- Beiträge: 252
- Registriert: Di 16. Mär 2010, 09:39
die Werte kannst du ja abfangen und mit einem entsprechenden y-Wert setzen oder löschen. Stell mal irgendwo einen Datensazt zur Verfügung.Klaus hat geschrieben:Die Beispiele sind interessant, doch scheint keines der Beispiele irgendwo einen Eintrag Null zu haben, woran der Logarithmus scheitern würde.
Herbert
-
- Forum-Guru
- Beiträge: 252
- Registriert: Di 16. Mär 2010, 09:39
und so mein Ergebnis, in der Hoffnung, dass es das ist, was du erwartest.Klaus hat geschrieben:So sieht z.B. ein Datensatz aus.CrazyHorse hat geschrieben: Stell mal irgendwo einen Datensazt zur Verfügung.
\documentclass{article} \usepackage{pst-plot} \begin{document} \psset{unit=3} \begin{pspicture}(0,-3)(3,1) \psaxes[logLines=all,subticks=5,xylogBase=10,Oy=-3](0,-3)(3,1) \pstScalePoints(1,1){ dup 0 eq { pop -1.e-30 }{ log } ifelse} { dup 0 eq { pop -1.e-30 }{ log } ifelse} \readdata{\Data}{zz.dat} \listplot[plotstyle=dots]{\Data} \end{pspicture} \end{document}
Hebrert
- Dateianhänge
-
- zzzz.png (4.91 KiB) 4258 mal betrachtet
Hi,
das sieht schon sehr gut aus.
Jetzt bleibt mir noch die Frage was genau diese Zeile(n) tun?
Ich habe es z.B. versucht mit der Erklärung zu pst-plot nachzuvollziehen, bin aber nicht ganz schlau daraus geworden. :-[
Ich vermute, dass es abfragt, ob ein Wert Null oder kleiner ist? Und falls ja, dann...?
Viele Grüße,
Klaus.
das sieht schon sehr gut aus.

Jetzt bleibt mir noch die Frage was genau diese Zeile(n) tun?
\pstScalePoints(1,1){ dup 0 eq { pop -1.e-30 }{ log } ifelse} { dup 0 eq { pop -1.e-30 }{ log } ifelse} \readdata{\Data}{zz.dat}
Ich vermute, dass es abfragt, ob ein Wert Null oder kleiner ist? Und falls ja, dann...?
Viele Grüße,
Klaus.
-
- Forum-Guru
- Beiträge: 252
- Registriert: Di 16. Mär 2010, 09:39
falls du mal einen HP-Taschenrechner bedienen musstest, dann hast du das Prinzip schon verstanden.Klaus hat geschrieben: Jetzt bleibt mir noch die Frage was genau diese Zeile(n) tun?
Ich habe es z.B. versucht mit der Erklärung zu pst-plot nachzuvollziehen, bin aber nicht ganz schlau daraus geworden. :-[\pstScalePoints(1,1){ dup 0 eq { pop -1.e-30 }{ log } ifelse} { dup 0 eq { pop -1.e-30 }{ log } ifelse} \readdata{\Data}{zz.dat}
dup: kopiert das oberste Element (den x-Wert)
0 eq: vergleicht ihn mit 0 und legt true oder false auf den STack, womit
der eine x-Wert weg ist, deswegen vorher dup
{ pop -1.e-30} die VAriante für true, also x=0, dann löschen wir die zweite
Null mit pop (wegen dup) und legen den extrem großen negativen Wert
anstelle dessen auf den Stack, der eh nicht gezeichnet werden kann,
da er 3 km links vom Ursprung liegt

{ log } ifelse anderenfalls, also x war nicht Null, machen wir das normale
und beenden die ifelse-Abfrage.
Das für y jetzt herzuleiten, überlasse ich dir

Wenn man das ein bisschen geübt hat, ist es relatv leicht und effizient. Entspricht auch prinzipiell den Türmen von Hanoi, also wegnehmen, rauflegen usw.
Herbert