Take the 2-minute tour ×
TeX - LaTeX Stack Exchange is a question and answer site for users of TeX, LaTeX, ConTeXt, and related typesetting systems. It's 100% free, no registration required.

Is there a possibility with listplot to make lines from a point which is defined?

Example...

Fileinput:

-0.013,0.471
0.044,-0.294
-0.069,0.446
0.025,-0.385
0.038,-0.448
0.073,-0.365
0.375,0.045
....

I want to find code wich does the following....

\psline(1,1)(-0.013,0.471)
\psline(1,1)(0.044,-0.294)
......

Is there a way to do this easyly?

Update Code:

\documentclass{scrreprt}

\usepackage{scrpage2}
\usepackage[ansinew]{inputenc}
%\usepackage[latin1]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{lmodern}
\usepackage[full]{textcomp} % Euro-Zeichen etc...

\usepackage{datatool}
\usepackage{graphicx}
\usepackage{rotating}
\usepackage{array}
\usepackage{ragged2e}

\newcolumntype{C}[1]{>{\centering\arraybackslash}p{#1}}

\usepackage{pstricks}
\usepackage{pst-plot} %27.07.2012 testweise
\usepackage{etoolbox}

\makeatletter
\def\ifinstr#1#2{%
  \def\@ifinstr##1#2##2\@nil{%
    \ifstrempty{##2}{\@secondoftwo}{\@firstoftwo}}%
  \@ifinstr#1\@@nil#2\@nil
}

\def\popleft#1#2{%
  \edef\@tmpa{#1}%
  \expandafter\@popleft\expandafter{\@tmpa}{#1}{#2}}
\def\@popleft#1#2#3{%
  \ifinstr{#1}{|}
    {\@@popleft{#2}{#3}\q@nil#1\q@stop}
    {\@@popleft{#2}{#3}\q@nil#1|\q@stop}}
\def\@@popleft#1#2\q@nil#3|#4\q@stop{\edef#1{#4}\edef#2{#3}}

\newcommand*\assignvalues[2]{\@assignvalues{#1}{#2}}
\def\@assignvalues#1#2{%
  \edef\@tmpb{#1}\edef\@tmpc{#2}%
  \popleft\@tmpb\currentvalueA
  \popleft\@tmpc\currentvalueB
  \csedef{\currentvalueA}{\currentvalueB}%
  \ifdefempty\@tmpb{}{\assignvalues\@tmpb\@tmpc}%
}
\makeatother

\FPset\tsize{0.75} % Schriftgröße
\FPset\schriftgr{0.75}
\FPset\schriftgrad{0.4} % Anderson Darling Schriftgröße
\FPset\digitz{5}


\begin{document}   

\assignvalues{xstart|xend|ystart|yend|yistart|nhlines|nvlines|nvunit|hilfsgitternetzlinien|alternativskalierung|inputf|altscale|rgg}{0|9|-0.8|4.6|0|14|10|2|5|0.35|Messdaten/statistik/rohstoffextruder.dat|1|0}
\assignvalues{dart}{loading}
\assignvalues{mbstartx|mbstepx|mbstarty|mbstepy}{1|1|1|1}
\assignvalues{bottomdesc|leftdesc|topdesc|rightdesc|lab|bcaption}{Unten|Links|Oben|Rechts|label|Bezeichnung}
\assignvalues{nvlines|nhlines|lab|mbstartx|mbstepx|hilfsgitterlinien|mbstarty|mbstepy|bcaption|bottomdesc|leftdesc}{5|4|fig:LoadingPlot|-0.1|0.1|15|-0.50|0.25|Loading Plot Rohstoff Extruder|Erste Komponente|Zweite Komponente}
\assignvalues{scalex|scaley|scaler}{1|1|1}

\assignvalues{dummyj|dummyba|dummyh|xendn|dummyq|altscale|miny|dummyu|dummybb|dummyr|dummyl|dummym|dummyb|minstarty|dummyu|dummyt|schriftgrad|gesamthl|messb|dummyd|nhlinesn|minstart|dummyr|dummybb|distmove}
{-0.600000000000000000|-0.069|-0.1|9|0.5|1|-0.448|-0.50|4.6|1.15000|1.80000|0.12000|1.8|0.25|-0.50|0|0.4|75|1|6|5|0.1|1.15000|4.6|1.000000000000000000}

\readdata{\dataA}{Messdaten/statistik/rohstoffextruder.dat}

\ifthenelse{\equal{\messb}{1}}{\message{^^JLade Datenquelle(n) für Diagramm \bcaption\space^^J}}{}
\DTLsetseparator{,}
\DTLifdbexists{table4441}{\DTLdeletedb{table4441}}{ }
\DTLloaddb[noheader,keys={wertx,werty}]{table4441}{\inputf}
\readdata{\dataA}{\inputf}
\ifthenelse{\equal{\messb}{1}}{\message{^^JEinige FP rechnungen, die durch Assignvalues ersetz worden sind..... \bcaption\space^^J}}{}

\begin{figure}[htbp]
%\begin{center}
\centering
\psset{xunit=\scalex cm,yunit=\scaley cm, runit=\scaler cm}

\pstScalePoints(1,1){\dummyba\space \dummyh\space neg \dummyba\space sub add add  \xendn\space mul \dummyq\space\altscale\space mul \space div}{\miny\space neg \dummyu\space neg \miny\space neg sub add add  \dummybb\space mul}
%
\ifthenelse{\equal{\messb}{1}}{\message{^^JZeichne Bildbereich}}{}
%
\begin{pspicture}(\xstart,\ystart)(\xend,\yend)
%
\ifthenelse{\equal{\messb}{1}}{\message{Zeichne die Gitternetzlinien für Diagramm \bcaption\space ^^J}}{}
%
\multiput(\xstart,\dummyr)(\xstart,\dummyr){\nhlines}{\psline[linecolor=black,linestyle=dashed,linewidth=0.4pt](\xstart,\yistart)(\xend,\yistart)}
\multiput(\xstart,\dummyr)(\xstart,\dummyr){\nhlines}{\psline[linecolor=black,linewidth=0.8pt](-0.1,0)(0,0.0)}
%
\multiput(\dummyl,\yistart)(\dummyl,\yistart){\nvlines}{\psline[linecolor=black,linestyle=dashed,linewidth=0.4pt](\xstart,\yistart)(\xstart,\yend)}
\multiput(\dummym,\yistart)(\dummym,\yistart){\gesamthl}{\psline[linecolor=black,linestyle=dotted,linewidth=0.4pt](\xstart,\yistart)(\xstart,\yend)}
\multiput(\dummyl,\yistart)(\dummyl,\yistart){\nvlines}{\psline[linecolor=black,linewidth=0.8pt](0,-0.1)(0,0.0)}
%
\ifthenelse{\equal{\messb}{1}}{\message{Die Gitternetzlinien für Diagramm \bcaption\space wurden fertiggestellt^^J}}{}
\ifthenelse{\equal{\messb}{1}}{\message{Beginne die Beschriftung für Diagramm \bcaption\space ^^J}}{}
%
\multido{\na=\dummyh+\minstart,\nb=0+\dummyb}{\dummyd}{\rput{0}(\nb,-0.3){\FPclip\na\na \scalebox{\schriftgrad}{\na}}}
\multido{\na=\dummyt+\dummyr,\nb=\dummyu+\minstarty}{\nhlinesn}{\rput{0}(-0.5,\na){\FPclip\nb\nb
\scalebox{\schriftgrad}{\nb}}}
\uput[0](\dummyj,-0.7){%
\scalebox{\scalex}{
\begin{tabular}{C{\xend cm}}
 \scalebox{\tsize}{\bottomdesc}  \\ 
\end{tabular}
}}
%
\uput[90](-1.3,-0.7){\rotateleft {%
\scalebox{\scaley}{
\begin{tabular}{C{\yend cm}}
 \scalebox{\tsize}{\leftdesc}  \\ 
\end{tabular}
}}} % Achsenbeschriftung y
\ifthenelse{\equal{\messb}{1}}{\message{Die Beschriftung für Diagramm \bcaption\space wurde fertig gestellt^^J}}{}
\ifthenelse{\equal{\messb}{1}}{\message{^^JZeichne die Daten von \bcaption\space ^^J}}{}


% Alter Code....
%\ifthenelse{\equal{\dart}{loading}}{
% \DTLforeach{table4441}{%
%  \wertx=wertx,\werty=werty}{
%  \FPupn{X}{\wertx}
%  \FPupn{X}{X \dummyba\space \dummyh\space neg \dummyba\space sub add add  \xendn\space mul \dummyq\space\altscale\space mul \space div}
%  \FPround\X\X\digitz
%  \FPupn{Y}{\werty}
%   \FPupn{Y}{Y \miny\space neg \dummyu\space neg \miny\space neg sub add add  \dummybb\space mul}
%   \FPupn{Xs}{\minstart\space \distmove\space mul \xendn\space mul \dummyq\space\altscale\space mul \space div}
%   \FPupn{Ys}{\dummyu\space neg \dummybb\space mul}   \psline[linecolor=blued,linestyle=dashed,linewidth=0.4pt](\Xs,\Ys)(\X,\Y)
% }
%}{}
%

% ersetzt durch Herberts neuen Code
\FPupn{Xs}{\minstart\space \distmove\space mul \xendn\space mul \dummyq\space\altscale\space mul \space div}
\FPupn{Ys}{\dummyu\space neg \dummybb\space mul}  
\makeatletter
\pslistplot[linecolor=red!50]{
   /startpoint { \Xs\space \Ys\space \tx@ScreenCoor\space moveto } def
   mark \dataA \space counttomark 2 div cvi /nData exch def 
   nData {
     startpoint \tx@ScreenCoor\space lineto
   } repeat
}
\pslistplot[plotstyle=dots]{\dataA}
% Herberts neuer Code

\ifthenelse{\equal{\dart}{screen}}{
\listplot[plotstyle=line, linewidth=1.73pt, linecolor=black,showpoints=false,dotstyle=*,dotsize=4pt]{\dataA}  % Punkte Blau 200 Grad
\listplot[plotstyle=dots, linewidth=1.73pt, linecolor=white,showpoints=true,dotstyle=*,dotsize=6pt]{\dataA}  % Punkte Blau 200 Grad
\listplot[plotstyle=dots, linewidth=1.73pt, linecolor=black,showpoints=true,dotstyle=*,dotsize=4pt]{\dataA}  % Punkte Blau 200 Grad
}{}

\ifthenelse{\equal{\dart}{loading}}{
\listplot[plotstyle=dots, linewidth=1.73pt, linecolor=black,showpoints=true,dotstyle=*,dotsize=6pt]{\dataA}  % Punkte Blau 200 Grad
\listplot[plotstyle=dots, linewidth=1.73pt, linecolor=black,showpoints=true,dotstyle=*,dotsize=4pt]{\dataA}  % Punkte Blau 200 Grad
}{}

\psline(\xstart,\yistart)(\xend,\yistart)
\psline(\xstart,\yistart)(\xstart,\yend)
\psline(\xend,\yistart)(\xend,\yend)
\psline(\xstart,\yend)(\xend,\yend)
\end{pspicture}
\caption[\bcaption]{\bcaption} 
\label{\lab}
\end{figure}
\end{document}

Code, nearly reached the goal....

\assignvalues{xstart|xend|ystart|yend|yistart|nhlines|nvlines|nvunit|hilfsgitternetzlinien|alternativskalierung|inputf|altscale|rgg}{0|9|-0.8|4.6|0|14|10|2|5|0.35|Messdaten/statistik/rohstoffextruder.dat|1|0}
\assignvalues{dart}{loading}
\assignvalues{mbstartx|mbstepx|mbstarty|mbstepy}{1|1|1|1}
\assignvalues{bottomdesc|leftdesc|topdesc|rightdesc|lab|bcaption}{Unten|Links|Oben|Rechts|label|Bezeichnung}
\assignvalues{nvlines|nhlines|lab|mbstartx|mbstepx|hilfsgitterlinien|mbstarty|mbstepy|bcaption|bottomdesc|leftdesc}{5|4|fig:LoadingPlot|-0.1|0.1|15|-0.50|0.25|Loading Plot Rohstoff Extruder|Erste Komponente|Zweite Komponente}
\assignvalues{scalex|scaley|scaler}{1|1|1}

    \assignvalues{dummyj|dummyba|dummyh|xendn|dummyq|altscale|miny|dummyu|dummybb|dummyr|dummyl|dummym|dummyb|minstarty|dummyu|dummyt|schriftgrad|gesamthl|messb|dummyd|nhlinesn|minstart|dummyr|dummybb|distmove}{-0.600000000000000000|-0.069|-0.1|9|0.5|1|-0.448|-0.50|4.6|1.15000|1.80000|0.12000|1.8|0.25|-0.50|0|0.4|75|1|6|5|0.1|1.15000|4.6|1.000000000000000000}

\FPupn{Xs}{\minstart\space \distmove\space mul \xendn\space mul \dummyq\space\altscale\space mul \space div}
\FPupn{Ys}{\dummyu\space neg \dummybb\space mul}  
\makeatletter
\pslistplot[linecolor=red!50]{
   /startpoint { \Xs\space \Ys\space \tx@ScreenCoor\space moveto } def
   mark \dataA \space counttomark 2 div cvi /nData exch def 
   nData {
     \tx@ScreenCoor\space \miny\space neg \dummyu\space neg \miny\space neg sub add add  \dummybb\space mul
     exch \tx@ScreenCoor\space \dummyba\space \dummyh\space neg \dummyba\space sub add add  \xendn\space mul \dummyq\space\altscale\space mul \space div exch
     startpoint \tx@ScreenCoor\space lineto
   } repeat
}
%\makeatother
\pslistplot[plotstyle=dots]{\dataA}
share|improve this question

1 Answer 1

up vote 2 down vote accepted

\pslistplot can handle any kind of PostScript functions:

\documentclass{article}
\usepackage{pst-plot}
\def\data{
-0.013 0.471
0.044 -0.294
-0.069 0.446
0.025 -0.385
0.038 -0.448
0.073 -0.365
0.375 0.045}
\begin{document}
\begin{psgraph}(0,0)(-0.5,-1)(1,1){5cm}{5cm}
\makeatletter
\pslistplot[linecolor=red!50]{
   /startpoint { 1 1 \tx@ScreenCoor\space moveto } def % define a function for moving to 1 1 in screen coordinates
   mark \data \space counttomark 2 div cvi /nData exch def % count the number of data pairs and save it in nData
   nData { % repeat loop over nData
     startpoint % move to startpoint (1,1)
     \tx@ScreenCoor\space % transform the last two x y values into screen coordinates
     lineto % draw a line to these corrdinates
   } repeat % end of repeat
}
\pslistplot[plotstyle=dots]{\data}
\end{psgraph}

\end{document}

enter image description here

share|improve this answer
    
Hallo Herbert, schaut gut aus, geht aber nicht. Ich antworte wegen dem Zeichenlimit auf mein eigenes Posting. Ich weiß genau, wo der Fehler liegt und dafür kann man hier aufgrund meiner Angaben nichts, sie waren leider unvollständig. Ich muß den X und Y Wert auch manipulieren können, bevor ich ihn an pslistplot übergebe....das habe ich in der Ursprungslösung ebenfalls gemacht. Vielleicht ist mein gesamtes Vorgehen stark überdenkenswürdig aber ich arbeite daran erstens immer mehr der zugrundeliegenden Mechanismen von pstricks und postscript zu verstehen (Mehr schlecht als recht) um dann .... –  Peter Ebelsberger Aug 10 '12 at 12:07
    
dynamische Diagramme erstellen zu können. Ein Problem, welches du 2009 QUELLE mit max und min hattest kann man über das datatool lösen....Ich hab im Code angeführt, wo es hackt. und zwar habe ich im Datatool Abschnitt eine Zeile stehen, die die X-Werte aus der Datei nochmals bearbeitet: \FPupn{X}{X \dummyba\space \dummyh\space neg \dummyba\space sub add add \xendn\space mul \dummyq\space\altscale\space mul \space div} und die fehlt, was natürlich dazu führt, dass er die variablen X-Koordinaten falsch setzt, die Ausgangspunkte habe ich schon korrekt geesetzt und ein leerzeichen mit \space .. –  Peter Ebelsberger Aug 10 '12 at 12:08
    
erzwungen.... warum bin ich eigentlich nicht mit login eingeloggt... ich hol das gleich nach.... –  Peter Ebelsberger Aug 10 '12 at 12:11
    
@user1558112: You should ask or write comments in English. This one of the policy here. I know Herbert is from Germany but nevertheless he will understand you. –  Marco Daniel Aug 10 '12 at 12:15
1  
@user1558112 Please do not use the comment feature as a chat. Asking details etc. and getting answers would be ok, but please delete the comments afterwards, if they are just for you but don't add value to the answer. The answer could be extended by ideas from the comments. Finally, there should only few comments remain, if at all. Herbert, it would be nice if you would also remove comments, or move into the answer. –  Stefan Kottwitz Aug 13 '12 at 7:42

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.