Hallo zusammen,

ich möchte gerne aus einer externen .txt oder .csv-Datei zeilenweise Punktkoordianten auslesen und mit Hilfe von tikz in Latex daraus eine Zeichnung erstellen für den Druck.

Die Datei hat folgendes Layout (Zahlenpaare stehen zeilenweise untereinander und sind durch ein ";" getrennt):

Öffne in Overleaf
0;0
4.267;0
2.626434203;-0.247438662
3.123622464;-0.270040693
3.638571116;-0.276587334
4.387588738;-0.309965296
4.597388432;-0.321883878
4.890808417;-0.106803221
5.349398135;-0.184094271
5.795033691;-0.301575063
6.253834907;-0.443782546

Hierbei soll der erste Wert jeweils die x-Koordinate und der zweite die y-Koordinate des Punktes darstellen.

Mein .tex-File sieht dann wie folgt aus:

Öffne in Overleaf
\documentclass[tikz,a4paper,margin=1mm]{standalone}
\usetikzlibrary{intersections,angles,quotes,calc,through}
\usepackage[ansinew]{inputenc}

\begin{document}
\begin{tikzpicture}

\draw[fill,red](\x,\y)circle(.5pt);

\draw[red](\x,\y)circle(2.5pt);

\end{tikzpicture}
\end{document}

Wie kann ich in LaTeX also die Datei zeilenweise auslesen und die Werte in die Variablen "x" und "y" schreiben und somit ein Bild mit allen Messpunkten erstellen?

Vielen Dank für eure Hilfe, Martin

gefragt 07 Okt '18, 09:28

Wienie2401's gravatar image

Wienie2401
14059
Akzeptiert-Rate: 0%

geschlossen 10 Okt '21, 12:32

Mit pgfplots geht das sehr einfach. pgfplots basiert auf TikZ. Bist Du auch an einer pgfplots Antwort interessiert?

(07 Okt '18, 09:37) Community

eigentlich möchte ich, dass die Punkte ohne Achsen ausgegeben werden.

(07 Okt '18, 10:27) Wienie2401

@Wienie2401 Dann ergänzt du einfach hide axis.

Tatsächlich meine ich mal etwas für die Verarbeitung externer Daten-Dateien im TikZ-Handbuch gefunden zu haben. Aber man benutzt dafür eigentlich, wie bereits von @murmeltier erwähnt, pgfplots.

(07 Okt '18, 11:23) cis

Um eine Antwort zu akzeptieren, bitte nicht die Frage schließen, sondern die Antwort per Haken akzeptieren → Ich habe auf meine Frage eine Antwort bekommen. Wie geht es weiter?

(10 Okt '21, 15:24) gast3

Mit pgfplots geht das sehr einfach. (Update: x und y auf 1cm gesetzt, danke cis!)

Öffne in Overleaf
\documentclass[tikz,a4paper,margin=1mm]{standalone}
\usepackage{filecontents}
\begin{filecontents*}{data.txt}
0;0
4.267;0
2.626434203;-0.247438662
3.123622464;-0.270040693
3.638571116;-0.276587334
4.387588738;-0.309965296
4.597388432;-0.321883878
4.890808417;-0.106803221
5.349398135;-0.184094271
5.795033691;-0.301575063
6.253834907;-0.443782546
\end{filecontents*}
\usepackage{pgfplots}
\usepackage[ansinew]{inputenc}
\pgfplotsset{compat=1.16}
\begin{document}
\pgfdeclareplotmark{odot}
{\pgfpathcircle{\pgfpoint{0pt}{0pt}}{2.5pt}\pgfusepathqstroke
\pgfpathcircle{\pgfpoint{0pt}{0pt}}{0.5pt}\pgfusepathqfill}
\begin{tikzpicture}
\begin{axis}[x=1cm,y=1cm,ymin=-1,ymax=0.2]
\addplot[mark=odot,only marks,mark size=1pt,red] table[col sep=semicolon] {data.txt};
\end{axis}
\end{tikzpicture}
\end{document}

alt text

Permanenter link

beantwortet 07 Okt '18, 09:48

Community's gravatar image

Community
21
Akzeptiert-Rate: 56%

bearbeitet 07 Okt '18, 17:49

Gel%C3%B6scht's gravatar image

Gelöscht
(ausgesetzt)

Vielen Dank für die schnelle Antwort. Jetzt müsste ich nur noch die Achsen so definieren/einstellen können, dass die Schrittweite exakt in cm-Schritten erfolgt. Also dass die Koordinaten (welche in cm sind) so ausgegeben werden.

(07 Okt '18, 10:28) Wienie2401
1

Bei pgfplots kannst Du natürlich den Maßstab mittels x=1cm, y=1cm festlegen.

(07 Okt '18, 11:27) cis

Eine reine tikz-Alternative ohne pgf unter der Verwendung des datatool-Pakets:

Öffne in Overleaf
\documentclass{standalone}
\usepackage{filecontents}
\begin{filecontents*}{data.csv}
x;y
0;0
4.267;0
2.626434203;-0.247438662
3.123622464;-0.270040693
3.638571116;-0.276587334
4.387588738;-0.309965296
4.597388432;-0.321883878
4.890808417;-0.106803221
5.349398135;-0.184094271
5.795033691;-0.301575063
6.253834907;-0.443782546
\end{filecontents*}
\usepackage{tikz}
\usepackage[utf8]{inputenc}

\usepackage{datatool}
\DTLsetseparator{;}
\DTLloaddb{daten}{data.csv}

\begin{document}

\begin{tikzpicture}
%Datenpunkte
\DTLforeach*{daten}{%
\x=x,%
\y=y%
}{%
\draw[fill=black] (\x,\y) circle(1pt);
}
%Achsen
\draw[->] (0,0) -- (7,0);
\draw[->] (0,-0.5) -- (0,0.1);
\end{tikzpicture}
\end{document}
Permanenter link

beantwortet 10 Okt '18, 15:40

Hirshy's gravatar image

Hirshy
73133745
Akzeptiert-Rate: 0%

Deine Antwort
Vorschau umschalten

Folgen dieser Frage

Per E-Mail:

Wenn sie sich anmelden, kommen Sie für alle Updates hier in Frage

Per RSS:

Antworten

Antworten und Kommentare

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ügen Sie einfach zwei Leerzeichen an die Stelle an der die neue Linie sein soll.
  • grundlegende HTML-Tags werden ebenfalls unterstützt

Frage-Themen:

×731
×11

gestellte Frage: 07 Okt '18, 09:28

Frage wurde gesehen: 7,945 Mal

zuletzt geändert: 10 Okt '21, 15:24