Hallo liebe LaTeX-Freunde,

ich würde gerne Koordinaten (2 double Werte durch Leerzeichen getrennt) zeilenweise aus einer .dat Datei einlesen und diese an ein Makro weiter geben. Mein Minimalbsp. sieht wie folgt aus:

Open in Online-Editor
 \begin{filecontents*}{dumm.dat}
         1.0 2.4
         2.2 1.2
         3.3 3.4
         4.4 1.1
         5.5 9.9 
   \end{filecontents*}

\newcommand\plotF[2]{%Plotte Kreis
    \addplot[samples=100, domain=0:360, red]({(1+#2*#2)*cos(x)+2*#1*#1}, {(1+#2*#2)*sin(x)+2*#2*#2});
}
     \documentclass[margin=2mm]{standalone}
     \usepackage{pgfplots} 
\begin{document}
         \begin{tikzpicture}
         \begin{axis}[clip=false]
             %Hier sollten zeilenweise die Koordinaten aus dumm.dat eingelesen werden und
              das Makro \plotF{x1}{x2} ausgeführt werden
        \end{axis}
       \end{tikzpicture} 
\end{document}

gefragt 23 Mai '15, 03:56

Ross's gravatar image

Ross
355522
Akzeptiert: 86%

bearbeitet 23 Mai '15, 03:57


Eine Möglichkeit ist wieder das Paket datatool:

Open in Online-Editor
\begin{filecontents*}{dumm.dat}
1.0 2.4
2.2 1.2
3.3 3.4
4.4 1.1
5.5 9.9
\end{filecontents*}

\documentclass[margin=2mm]{standalone}
\usepackage{pgfplots}
\pgfplotsset{compat=1.12}

\usepackage{datatool}
\DTLsetseparator{ }% Leerzeichen als Spaltentrenner
\DTLloaddb[noheader]{mylist}{dumm.dat}

\newcommand\plotF[2]{% plotte Kreis
  \addplot[samples=100, domain=0:360, red]
    ({(1+#2*#2)*cos(x)+2*#1*#1}, {(1+#2*#2)*sin(x)+2*#2*#2});
}
\newcommand\argI{}
\newcommand\argII{}

\begin{document}
\begin{tikzpicture}
  \begin{axis}
  \DTLforeach{mylist}{\argI=\dtldefaultkey1,\argII=\dtldefaultkey2}{
    \plotF{\argI}{\argII}
  }
  \end{axis}
\end{tikzpicture} 
\end{document}

alt text

Wenn das dann tatsächlich Kreise werden sollen, musst Du noch mit der Option axis equal dafür sorgen, dass in x- und y-Richtung der gleiche Maßstab verwendet wird:

Open in Online-Editor
\begin{filecontents*}{dumm.dat}
1.0 2.4
2.2 1.2
3.3 3.4
4.4 1.1
5.5 9.9
\end{filecontents*}

\documentclass[margin=2mm]{standalone}
\usepackage{pgfplots}
\pgfplotsset{compat=1.12}

\usepackage{datatool}
\DTLsetseparator{ }% Leerzeichen als Spaltentrenner
\DTLloaddb[noheader]{mylist}{dumm.dat}

\newcommand\plotF[2]{% plotte Kreis
  \addplot[samples=100, domain=0:360, red]
    ({(1+#2*#2)*cos(x)+2*#1*#1}, {(1+#2*#2)*sin(x)+2*#2*#2});
}
\newcommand\argI{}
\newcommand\argII{}

\begin{document}
\begin{tikzpicture}
  \begin{axis}[axis equal]
  \DTLforeach{mylist}{\argI=\dtldefaultkey1,\argII=\dtldefaultkey2}{
    \plotF{\argI}{\argII}
  }
  \end{axis}
\end{tikzpicture} 
\end{document}

alt text

Permanenter link

beantwortet 23 Mai '15, 08:25

esdd's gravatar image

esdd
14.2k53251

Super! Dank Dir! Schön, dass einem hier immer so professionell geholfen wird!

(23 Mai '15, 14:32) Ross
Deine Antwort auf die Frage (nicht auf andere Antworten)
Knebel-Vorschau

Folge dieser Frage

Per E-Mail:

Wenn Du Dich anmeldest, kannst Du Updates hier abonnieren

Per RSS:

Antworten

Antworten und Kommentare

Aktuelle Buch-Infos

LaTeX Cookbook

LaTeX Beginners Guide

Limitierter Rabatt ebook
50% Coupon code tDRet6Y

Markdown-Grundlagen

  • *kursiv* oder _kursiv_
  • **Fett** oder __Fett__
  • Link:[Text](http://url.com/ "Titel")
  • Bild?![alt Text](/path/img.jpg "Titel")
  • nummerierte Liste: 1. Foo 2. Bar
  • zum Hinzufügen ein Zeilenumbruchs füge einfach zwei Leerzeichen an die Stelle ein, an der die neue Zeile sein soll.
  • grundlegende HTML-Tags werden ebenfalls unterstützt

Zugeordnete Themen:

×160
×9
×7
×3

Frage gestellt: 23 Mai '15, 03:56

Frage wurde angeschaut: 1,910 Mal

Zuletzt aktualisiert: 23 Mai '15, 14:32