PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Diagramm mit pstricks



Hansi
27-01-2010, 15:09
Hallo,


Ich bin gerade dabei meine Dipl. Arbeit zu schreiben und benötige noch Diagramme. Da ich mit LATEX schreibe, will ich keine Excel Diagramme einfügen. Ich habe PSTricks gefunden, das gefällt mir auch ziemlich gut, aber ich habe da noch so meine Probleme.
Ich habe von der Seite:
http://tug.org/PSTricks/main.cgi?file=pst-plot/psaxes#labelpos

Das Bsp.: multi axes gezogen, da ich auch zwei y-Achsen brauche.
Da habe ich soweit abgeändert, doch so richtig funktioniert es nicht. Da ich mehrere Diagramme einfügen muss, aber alle ähnlich sind nur mit anderen Werten, reicht mir eine richtige Version, die ich dann soweit abändere.
Hier ist mal mein Bsp:


\documentclass[12pt]{article}
\usepackage{pst-plot}
\usepackage{multido}
\usepackage{numprint}% you need the latest (!!!) version
\npthousandsep{\,}
\usepackage{arrayjob}% load it after numprint
%
\newarray{\Years}
\readarray{Years}{%
& -1 & -0,5 & -0,25 & 0 & 0,25 & 0,5& 1%
}
\def\psvlabel#1{\numprint{#1}}%
\def\pshlabel#1{{\checkYears(#1)\small\cachedata}}
%
% the following data could be saved in a file and then read
% with \readdata{\dataI}{external/file/name.dat}
%
\def\dataI{%
1 542
2 529
3 524
4 512
5 500
6 489
7 445
}
\def\dataII{
1 2,688
2 2,62
3 2,603
4 2,545
5 2,474
6 2,414
7 2,19
}
%
\makeatletter
\def\ScaleFactor{1.0}
\pst@def{ScalePoints}<%
/y ED /x ED
counttomark dup dup cvi eq not { exch pop } if
/m exch def /n m 2 div cvi def
n { y mul \ScaleFactor\space div m 1 roll x mul m 1 roll /m m 2 sub def } repeat>
%
\makeatother
%
\begin{document}
%
\begin{pspicture}(-0.5,-0.5)(10.5,11)
\psset{xunit=1.5}
\multido{\r=0+3.125,\i=0+500}{4}{%
\psline[linewidth=0.1pt](7,\r)(7.1,\r)\uput[0](7.1,\r){\numprint{\i}}}
\psaxes[dy=2,Dy=200000,axesstyle=frame,tickstyle=bottom,Ox =1](7,10)
\rput{90}(-1.5,5){digitaler Wert}
%\rput(3.5,6){Number of X-rays}
\rput{90}(8,5){Spannung[V]}
%\rput(5,2.5){Cases diagnosed}
\rput(3.5,-1.25){Winkel[°]}
\psset{showpoints=true,dotsize=0.2,plotstyle=line, linewidth=2pt}
\def\ScaleFactor{100000.0}
\listplot[linecolor=red]{\dataI}
\def\ScaleFactor{150.0}
\listplot[linecolor=blue]{\dataII}
\end{pspicture}

\end{document}



Ich habe meine Werte für x und y eingetragen, aber er bezieht die Werte nicht auf diese Achse, des weiteren komme ich mit der Beschriftung der Achsen nicht klar.
Zwischen der linken Y Achse und der X Achse ist mehr Abstand, als zwischen der rechten y-Achse und der x-Achse.

Ich benutze für meine komplette Arbeit pdftex, damit funktioniert pstricks nicht, oder?
Die Diagramme finde ich aber recht schön, kann ich Sie doch irgendwie benutzen?
Was ist wenn ich die Diagramme in einer externen Datei erzeuge, diese dann in einem Grafikprogramm raus schneide, als pdf abspeichere, und dann als Grafik in Latex einfüge?


Es wäre nett, wenn jemand Zeit und Lust hätte, mir zu helfen.

mechanicus
27-01-2010, 15:37
Hallo,

Daten werden mit Punkt und nicht mit Komma getrennt,

Gruß
Marco

Hansi
27-01-2010, 15:42
Hallo,

was genau meinst du mit Daten?
Dort wo ich ein Komma gemacht habe, dass soll eine Kommazahl sein.

bobmalaria
27-01-2010, 15:49
hi,

latex isr grundsätzlich englisch und dort ist der dezimaltrenner ein . und nicht ein ,. also muss es 2.55 anstatt 2,55 heißen

Hansi
27-01-2010, 16:04
Hallo,

OK. das habe ich jetzt. Jetzt werden mir die Daten aber immer noch nicht auf die y-Achsen bezogen.

mechanicus
27-01-2010, 16:44
Sieha dar:
http://www.matheplanet.com/matheplanet/nuke/html/viewtopic.php?topic=135150&start=0&lps=986326#v986326

voss
27-01-2010, 19:54
OK. das habe ich jetzt. Jetzt werden mir die Daten aber immer noch nicht auf die y-Achsen bezogen.

du brauchst hier nicht den Aufwand wie im Beispiel von
http://PSTricks.tug.org zu betreiben:


\documentclass[12pt]{article}
\usepackage{pst-plot}
\usepackage{multido}
%
% the following data could be saved in a file and then read
% with \readdata{\dataI}{external/file/name.dat}
%
\def\dataI{%
1 542
2 529
3 524
4 512
5 500
6 489
7 445
}
\def\dataII{
1 2.688
2 2.62
3 2.603
4 2.545
5 2.474
6 2.414
7 2.19
}
%
\begin{document}
%
\begin{pspicture}(0.5,-0.5)(8,11)
\psset{xunit=1.5}
\psaxes[dy=2,Dy=200,axesstyle=frame,tickstyle=bottom,Ox=-1](1,-0.4)(7,10)
\rput{90}(-2,5){digitaler Wert}
\rput(3.5,6){Number of X-rays}
\rput{90}(8,5){Spannung[V]}
\rput(5,2.5){Cases diagnosed}
\rput(3.5,-1.25){Winkel[$^\circ$]}
\psset{showpoints=true,dotsize=0.2,plotstyle=line, linewidth=2pt}
\listplot[yunit=0.01,linecolor=red]{\dataI}
\listplot[yunit=3,linecolor=blue]{\dataII}
\end{pspicture}

\end{document}


Herbert

mechanicus
27-01-2010, 20:01
Hallo Herbert,

Passt das hier:
http://www.matheplanet.com/matheplanet/nuke/html/viewtopic.php?topic=135150&start=0&lps=986417#v986417
oder war ich zu umständlich?

Gruß
Marco

voss
27-01-2010, 20:08
Passt das hier:
http://www.matheplanet.com/matheplanet/nuke/html/viewtopic.php?topic=135150&start=0&lps=986417#v986417
oder war ich zu umständlich?


oh, wenn ich das gesehen hätte, dann hätte ich auch nicht geantwortet.
Doppelposts sind nervig.

Die Werte sind eigentlich harmlos, sodass man sie direkt über yunit
verarbeiten kann und ebenso ein Achsenpaar. Dann kan man sich
\pstScalePoints sparen. Aber psgraph ist schon die richtige Variante!

Herbert