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, 03:28

Wienie2401's gravatar image

Wienie2401
10527
Akzeptiert: 75%

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

(07 Okt, 03:37) Murmeltier

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

(07 Okt, 04: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, 05:23) cis

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, 03:48

Murmeltier's gravatar image

Murmeltier
2.0k64

bearbeitet 07 Okt, 11:49

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, 04:28) Wienie2401
1

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

(07 Okt, 05: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, 09:40

Hirshy's gravatar image

Hirshy
5811032

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

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:

×627
×10

Frage gestellt: 07 Okt, 03:28

Frage wurde angeschaut: 375 Mal

Zuletzt aktualisiert: 10 Okt, 09:40