[PSTricks,fileplot] Daten logarithmisch auftragen

Tabellen und Grafiken erstellen und anordnen


Klaus
Forum-Century
Forum-Century
Beiträge: 184
Registriert: Do 27. Jan 2011, 19:30

[PSTricks,fileplot] Daten logarithmisch auftragen

Beitrag von Klaus »

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.

Klaus
Forum-Century
Forum-Century
Beiträge: 184
Registriert: Do 27. Jan 2011, 19:30

Beitrag von Klaus »

Okay,

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}
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.

CrazyHorse
Forum-Guru
Forum-Guru
Beiträge: 252
Registriert: Di 16. Mär 2010, 09:39

Beitrag von CrazyHorse »

Klaus hat geschrieben: 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}
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?
Es geht alles, wobei deine obige Lösung nicht gerade umwerfend ist ...
http://tug.org/PSTricks/main.cgi?file=p ... #logarithm
http://tug.org/PSTricks/main.cgi?file=p ... #logarithm

Herbert

Klaus
Forum-Century
Forum-Century
Beiträge: 184
Registriert: Do 27. Jan 2011, 19:30

Beitrag von Klaus »

CrazyHorse hat geschrieben: Es geht alles, wobei deine obige Lösung nicht gerade umwerfend ist ...
Dazu liefert STFW glaube ich auch keine Garantie. ;)
Die Beispiele sind interessant, doch scheint keines der Beispiele irgendwo einen Eintrag Null zu haben, woran der Logarithmus scheitern würde.

Viele Grüße,
Klaus.

CrazyHorse
Forum-Guru
Forum-Guru
Beiträge: 252
Registriert: Di 16. Mär 2010, 09:39

Beitrag von CrazyHorse »

Klaus hat geschrieben:Die Beispiele sind interessant, doch scheint keines der Beispiele irgendwo einen Eintrag Null zu haben, woran der Logarithmus scheitern würde.
die Werte kannst du ja abfangen und mit einem entsprechenden y-Wert setzen oder löschen. Stell mal irgendwo einen Datensazt zur Verfügung.

Herbert

Klaus
Forum-Century
Forum-Century
Beiträge: 184
Registriert: Do 27. Jan 2011, 19:30

Beitrag von Klaus »

CrazyHorse hat geschrieben: Stell mal irgendwo einen Datensazt zur Verfügung.
So sieht z.B. ein Datensatz aus.

Viele Grüße,
Klaus.

CrazyHorse
Forum-Guru
Forum-Guru
Beiträge: 252
Registriert: Di 16. Mär 2010, 09:39

Beitrag von CrazyHorse »

Klaus hat geschrieben:
CrazyHorse hat geschrieben: Stell mal irgendwo einen Datensazt zur Verfügung.
So sieht z.B. ein Datensatz aus.
und so mein Ergebnis, in der Hoffnung, dass es das ist, was du erwartest.
\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
zzzz.png (4.91 KiB) 4258 mal betrachtet

Klaus
Forum-Century
Forum-Century
Beiträge: 184
Registriert: Do 27. Jan 2011, 19:30

Beitrag von Klaus »

Hi,

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 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.

CrazyHorse
Forum-Guru
Forum-Guru
Beiträge: 252
Registriert: Di 16. Mär 2010, 09:39

Beitrag von CrazyHorse »

Klaus hat geschrieben: 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 habe es z.B. versucht mit der Erklärung zu pst-plot nachzuvollziehen, bin aber nicht ganz schlau daraus geworden. :-[
falls du mal einen HP-Taschenrechner bedienen musstest, dann hast du das Prinzip schon verstanden.
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 :-) wobei ich gerade sehe, dass es ja -1.e30 sein muss, sonst liegt er ja bei Null.
{ 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

Klaus
Forum-Century
Forum-Century
Beiträge: 184
Registriert: Do 27. Jan 2011, 19:30

Beitrag von Klaus »

Danke,

dann will ich diesen Thread mal als 'beantwortet' bezeichnen. Obwohl ich nicht ausschließen möchte, dass weitere Fragen folgen. ;)

Gruß,
Klaus.

Antworten