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 |
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} beantwortet 10 Okt '18, 15:40 Hirshy |
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} 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
(07 Okt '18, 11:27)
cis
|
Mit pgfplots geht das sehr einfach. pgfplots basiert auf TikZ. Bist Du auch an einer pgfplots Antwort interessiert?
eigentlich möchte ich, dass die Punkte ohne Achsen ausgegeben werden.
@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
.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?