PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : psgraph: Grid und Achsenbeschriftung



DaPhil
27-05-2010, 08:01
Hallo,
ich habe mir mit psgraph ein "Vorlage" für einen Graphen gebastelt:


\listfiles

\documentclass[12pt,a4paper]{scrbook}
\usepackage[ngerman]{babel}

\usepackage{auto-pst-pdf}
\usepackage{pstricks-add}

\begin{document}

\begin{postscript}
\psset{
xAxisLabel=$x$,
yAxisLabel=$f(x)$,
xAxisLabelPos={c,-0.2},
xAxisLabelPos={-0.2,c}
}

\begin{psgraph}[
axesstyle=none,
xAxis=false,
yAxis=false
](0,0)(1,1){5cm}{5cm}

\psaxes[
Ox=0,
Oy=0,
Dx=0.5,
Dy=0.5,
axesstyle=frame,
showorigin=true,
linewidth=0.5pt,
ticks=all,
tickstyle=inner,
subticks=2,
ticksize=5pt,
subticksize=0.5,
tickwidth=0.5pt,
linecap=1,
subtickcolor=black,
subtickwidth=0.5pt
](0,0)(1,1)

\psxTick[
tickwidth=0.5pt,
linecap=1,
tickstyle=inner,
ticksize=7pt,
linewidth=0.5pt
](0,7854){0,7854}

\end{psgraph}
\end{postscript}

\end{document}

Erklärung: Ich lösche mittels

\begin{psgraph}[
axesstyle=none,
xAxis=false,
yAxis=false
](0,0)(1,1){5cm}{5cm}

die komplette Achse und das Kreuz des Koordinatenursprungs, da sonst die Daten später über die Achsen geplottet werden, was nicht so schön aussieht. Die Achsen zeichen ich später dann neu. Frage hier: Ist das zu kompliziert? Gibts einen besseren Weg?

Was mir noch zu einer perfekten Vorlage fehlt ist folgendes:
1) Der Grid. Ich kann zwar einen mittels \psgrid zeichnen, dieser wird jedoch nicht in Vielfachen von Dx und Dy gezeichnet sondern erscheint nur in Vielfachen von 1. Der Graph aus meinem Code oben geht aber nur bis 1. Deswegen erscheint hier kein Grid.
2) Es wurde eine zusätzliche Markierung auf der x-Achse gesetzt. Die Beschriftung hat einen anderen Abstand als die anderen Markierungen, kann man das angleichen?
3) Abstand der Achsenbeschriftung. Dieser ist hier nur intuitiv gesetzt. kann man diesen "berechnen" lassen? So dass man immer denselben Abstand zu den Beschriftungen hat, nicht zur Achse. Denn wenn dort Zahlen wie 3*10^8 stehen würden läge die Achsenbschriftung auf der y-Achse mittendrin...
4) Gibt es einen Weg einen solchen Graphen etwas schlauer zu "automatisieren"? Z.B. dass die Achsen ohne weitere Angaben genauso groß gezeichnet werden wie in \begin{psgraph} vorgegeben? Oder dass man nicht für jeden Graphen speziell die ticksize, den Koordinatenusprung, die Schrittweite der Majorticks etc. angeben muss?

Vielen Dank für jede Hilfe!

voss
27-05-2010, 08:26
ich habe mir mit psgraph ein "Vorlage" für einen Graphen gebastelt:
Erklärung: Ich lösche mittels

\begin{psgraph}[
axesstyle=none,
xAxis=false,
yAxis=false
](0,0)(1,1){5cm}{5cm}

die komplette Achse und das Kreuz des Koordinatenursprungs, da sonst die Daten später über die Achsen geplottet werden, was nicht so schön aussieht. Die Achsen zeichen ich später dann neu. Frage hier: Ist das zu kompliziert? Gibts einen besseren Weg?

Was mir noch zu einer perfekten Vorlage fehlt ist folgendes:
1) Der Grid. Ich kann zwar einen mittels \psgrid zeichnen, dieser wird jedoch nicht in Vielfachen von Dx und Dy gezeichnet sondern erscheint nur in Vielfachen von 1. Der Graph aus meinem Code oben geht aber nur bis 1. Deswegen erscheint hier kein Grid.
2) Es wurde eine zusätzliche Markierung auf der x-Achse gesetzt. Die Beschriftung hat einen anderen Abstand als die anderen Markierungen, kann man das angleichen?
3) Abstand der Achsenbeschriftung. Dieser ist hier nur intuitiv gesetzt. kann man diesen "berechnen" lassen? So dass man immer denselben Abstand zu den Beschriftungen hat, nicht zur Achse. Denn wenn dort Zahlen wie 3*10^8 stehen würden läge die Achsenbschriftung auf der y-Achse mittendrin...
4) Gibt es einen Weg einen solchen Graphen etwas schlauer zu "automatisieren"? Z.B. dass die Achsen ohne weitere Angaben genauso groß gezeichnet werden wie in \begin{psgraph} vorgegeben? Oder dass man nicht für jeden Graphen speziell die ticksize, den Koordinatenusprung, die Schrittweite der Majorticks etc. angeben muss?


Die Achsen über den Grafen zu zeichnen, ist ziemlich ungewöhnlich,
schließlich ist der Graf das Wichtigste.
Wie auch immer, dein Ansatz ist zu kompliziert, da du ja die Eigenschaften von psgraph nicht wirklich nutzt.

\listfiles
\documentclass[12pt,a4paper]{scrbook}
\usepackage[ngerman]{babel}
\usepackage{pstricks-add,auto-pst-pdf}

\begin{document}

\psset{unit=5cm}
\begin{pspicture}(-0.2,-0.2)(1,1)
\psaxes[
Dx=0.5,
Dy=0.5,
axesstyle=frame,
showorigin=true,
linewidth=0.5pt,
ticks=all,
tickstyle=inner,
subticks=2,
ticksize=5pt,
subticksize=0.5,
tickwidth=0.5pt,
linecap=1,
subtickcolor=black,
subtickwidth=0.5pt](0,0)(1,1)
\uput[180](-0.15,0.5){$f(x)$}
\uput[-90](0.5,-0.15){$x$}
\psxTick[
tickwidth=0.5pt,
linecap=1,
tickstyle=inner,
ticksize=7pt,
linewidth=0.5pt
](0.7854){0,7854}
\end{pspicture}

\end{document}

Herbert

DaPhil
27-05-2010, 08:54
Ja, stimmt schon dass der Graph das wichtigste ist! Aber ich möchte ja einen frame haben, d.h. ich kreuze ihn nicht außer an den Randpunkten... Für einen Graphen mit x-y-Achsen die sich schneiden würde ich auch die Daten über die Achsen plotten.


Wie auch immer, dein Ansatz ist zu kompliziert, da du ja die Eigenschaften von psgraph nicht wirklich nutzt.

Was sind denn die Eigenschaften von psgraph? Hört sich ja schon danach an als ob es sinnvoller ist, psgraph für einen Graphen zu nutzen anstatt pspicture... Ist es nur die Skalierung die einfacher wird? Heißt ich muss nicht mehr \begin{pspicture}(-0.2,-0.2)(1,1) machen (also vom negativen Bereich starten), um nichts abzuschneiden?

voss
27-05-2010, 09:09
Ja, stimmt schon dass der Graph das wichtigste ist! Aber ich möchte ja einen frame haben, d.h. ich kreuze ihn nicht außer an den Randpunkten... Für einen Graphen mit x-y-Achsen die sich schneiden würde ich auch die Daten über die Achsen plotten.

Was sind denn die Eigenschaften von psgraph? Hört sich ja schon danach an als ob es sinnvoller ist, psgraph für einen Graphen zu nutzen anstatt pspicture... Ist es nur die Skalierung die einfacher wird? Heißt ich muss nicht mehr \begin{pspicture}(-0.2,-0.2)(1,1) machen (also vom negativen Bereich starten), um nichts abzuschneiden?

mit psgraph kannst du die ausgegebene Bildgröße, beispielsweise
7,12345cm * 4.21345cm festlegen, ohne dich um die Skalierung
kümemrn zu müssen. In deinem Fall hast du aber den einheitlichen
Skalierungsfaktor 5, sodass psgraph nicht wirklich eine Erleichterung
darstellt.

Herbert

DaPhil
27-05-2010, 09:24
Gut, ich habe die Größe 5*5 cm^2 rein willkürlich gemacht.

Wie würdest du denn eine solche Vorlage "basteln"? Kann man z.B. irgendwie berechnen lassen, in welchen Abständen die ticks gesetzt werden sollen? In einem Graphen mit x=[0,1e4] ist es ja am besten die ticks bei n*1000 zu setzen. Das macht psgraph aber nicht automatisch. Gibts da ne Lösung?

voss
27-05-2010, 09:52
Gut, ich habe die Größe 5*5 cm^2 rein willkürlich gemacht.

Wie würdest du denn eine solche Vorlage "basteln"? Kann man z.B. irgendwie berechnen lassen, in welchen Abständen die ticks gesetzt werden sollen? In einem Graphen mit x=[0,1e4] ist es ja am besten die ticks bei n*1000 zu setzen. Das macht psgraph aber nicht automatisch. Gibts da ne Lösung?

dafür gibt es keine automatische Lösung, denn jeder will die Ticks anders haben ...

psgraph nehme ich imemr dann, wenn ich genaue Ausgabemaße brauche, beispielsweise \linewidth für die Breite. Ansonsten mache ich es mit der pspicture-Umgebung

Herbert