Daten mit TikZ einlesen und bearbeiten

Antwort erstellen


Diese Frage dient dazu, das automatisierte Versenden von Formularen durch Spam-Bots zu verhindern.
Smilies
:D :) :( :o :shock: :? 8) :lol: :-x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen:

BBCode ist eingeschaltet
[img] ist eingeschaltet
[flash] ist ausgeschaltet
[url] ist eingeschaltet
Smilies sind eingeschaltet

Die letzten Beiträge des Themas

Ich habe die Datenschutzerklärung gelesen und bin damit einverstanden.

   

Wenn du eine Datei oder mehrere Dateien anhängen möchtest, gib die Details unten ein.

Ansicht erweitern Die letzten Beiträge des Themas: Daten mit TikZ einlesen und bearbeiten

von Neuling :) » Fr 17. Aug 2018, 00:17

Guten Abend,

vielen Dank für die Antwort!!
Genau so was hab ich gesucht. :D

Jetzt guck ich mal, dass ich das auf meine eigentlichen Daten anwenden kann.

Das hat mir wirklich sehr geholfen!

Danke und
Viele Grüße

von esdd » Do 16. Aug 2018, 23:24

Du könntest das Paket pgfplotstable nutzen. Im folgenden Beispiel werden die Koordinaten mit c0 bis c8 bezeichnet.
\documentclass{scrartcl} 

\usepackage{pgfplotstable}% lädt pgfplots, tikz, graphicx, ...
\pgfplotsset{compat=newest}% aktuell ist Version 1.16

\usepackage{filecontents} 
\begin{filecontents*}{data.txt} 
    0    0    0 
    0   10    0 
   10   10    0 
   10    0    0 
    0    0  -10 
    0   10  -10 
   10   10  -10 
   10    0  -10 
    5   15   -5 
\end{filecontents*}

\begin{document}
\begin{tikzpicture}

\pgfplotstableread{data.txt}{\data}
\pgfplotstablegetrowsof{\data}% Anzahl der Zeilen
\newcommand*\lastrow{}
\pgfmathtruncatemacro\lastrow{\pgfplotsretval-1}% letzte Zeilennummer

\foreach \r in {0,...,\lastrow}{
  \pgfplotstablegetelem{\r}{0}\of\data
  \edef\cx{\pgfplotsretval}
  \pgfplotstablegetelem{\r}{1}\of\data
  \edef\cy{\pgfplotsretval}
  \pgfplotstablegetelem{\r}{2}\of\data
  \edef\cz{\pgfplotsretval}
  \coordinate(c\r)at(\cx,\cy,\cz);
}

\draw
  (c0) foreach \i in {1,2,3}{--(c\i)}--cycle
  (c4) foreach \i in {5,6,7}{--(c\i)}--cycle
  foreach[evaluate={\j=\i+4}] \i in {0,...,3}{(c\i)--(c\j)}
  (c8) foreach \i in {1,2,5,6}{edge(c\i)}
;

\end{tikzpicture}
\end{document}

Daten mit TikZ einlesen und bearbeiten

von Neuling :) » Mi 15. Aug 2018, 13:46

Hallo,

ich bin neu hier, falls ich also Fehler mache, bitte verzeiht und sagt es mir.

Ich bin auch in Latex noch nicht so erfahren und versuche mir alles so gut es geht zusammen zu bauen. Für mein aktuelles Problem hab ich aber noch keine Lösung gefunden und wäre für jede Idee sehr dankbar.

Jetzt zum Problem:
Ich habe eine Liste mit x-, y- und z-Koordinaten. Diese würde ich gern irgendwie einlesen und jedem Punkt (xi, yi, zi) eine Coordinate zuordnen, um dann später daraus was zu zeichnen.

Bis jetzt habe ich immer zu Fuß die Koordinaten übertragen, also mit
\coordinate (a) at (x1,y1,z1);
\coordinate (a) at (x2,y2,z2);

Zum Beispiel:
\documentclass[%
  a4paper,%
  11pt,%
]{scrartcl}
\usepackage[utf8x]{inputenc}

\usepackage[english, ngerman]{babel}

%%% Zeichenpakete
\usepackage{tikz}
\usepackage{pgfplots}
\usepackage{graphicx}

\begin{document}
\begin{tikzpicture}
	\coordinate (a) at (0,0,0);
	\coordinate (b) at (0,10,0);
	\coordinate (c) at (10,10,0);
	\coordinate (d) at (10,0,0);
	\coordinate (e) at (0,0,-10);
	\coordinate (f) at (0,10,-10);
	\coordinate (g) at (10,10,-10);
	\coordinate (h) at (10,0,-10);
	\coordinate (i) at (5,15,-5);
	
	\draw (a) -- (b);
	\draw (b) -- (c);
	\draw (c) -- (d);
	\draw (d) -- (a);
	\draw (e) -- (f);
	\draw (f) -- (g);
	\draw (g) -- (h);
	\draw (h) -- (e);
	\draw (a) -- (e);
	\draw (b) -- (f);
	\draw (c) -- (g);
	\draw (d) -- (h);
	\draw (b) -- (i);
	\draw (c) -- (i);
	\draw (f) -- (i);
	\draw (g) -- (i);
	

\end{tikzpicture}


\end{document}
Jetzt habe ich aber langsam so viele Daten, dass das etwas anstrengend ist.

Ich habe schon gelesen, dass man Plots erstellen kann, etwa:
\documentclass[%
  a4paper,%
  11pt,%
]{scrartcl}
\usepackage[utf8x]{inputenc}

\usepackage[english, ngerman]{babel}

%%% Zeichenpakete
\usepackage{tikz}
\usepackage{pgfplots}
\usepackage{graphicx}

\usepackage{filecontents}
\begin{filecontents*}{data.txt}
	0 	0 	0
	0 	10 	0
	10 	10 	0
	10 	0 	0
	0 	0 	-10
	0 	10 	-10
	10 	10 	-10
	10 	0 	-10
	5 	15 	-5
\end{filecontents*}

\begin{document}

\begin{tikzpicture}

\begin{axis}
\addplot [ycomb] table{data.txt};
\end{axis}
\end{tikzpicture}
\end{document}

Aber erstens will ich gerade die Achsen nicht haben, und zweitens werden da die Verbindungen der Punkte automatisch generiert und das brauche ich ja auch nicht. Ich will ja eigentlich die Punkte ansprechen und selbst sagen, mit welchem sie verbunden sein sollen.

Was Anderes habe ich bis jetzt noch nicht gefunden.
Ich hoffe, ich konnte mein Problem einigemaßen deutlich machen (und das mit dem Minimalbeispiel richtig umsetzen)
Kann mir hier eventuell jemand helfen? Ich wäre für jeden Tipp dankbar!

Liebe Grüße
und schonmal vielen Dank
Der Neuling

Nach oben