Hallo,

Ich habe einen Datensatz mit Längen-, Breiten- und Höhenangaben für verschiedene Quader. Diese Quader möchte ich nun an einer bestimmten Stelle im Raum plotten. Für die Positionsangabe würde es sich für mich anbieten, die Koordinaten eines Eckpunktes des Quaders anzugeben.

Der Datensatz ist eine .txt Datei und ist wie folgt angeordnet:

Öffne in Overleaf
Laenge Breite Hoehe x y z

20 10 5 0 0 0

40 20 10 10 0 0

Aber ich könnte den Datensatz auch als csv exportieren. Hat jemand eine Idee, wie ich diesen Datensatz elegant als 3D Plot zu meiner tikz-grafik hinzufügen kann?

Erste Überlegungen:

Öffne in Overleaf
 \begin{tikzpicture} 
  \begin{axis}[view/h=30, xlabel=$x$,ylabel=$y$]
  \addplot3 [mark=cube, 
                       cube/size x= {Laenge} ,
                       cube/size y= {Breite} ,
                       cube/size z= {Hoehe}]
                       table {data.txt};
\end{axis}
\end{tikzpicture}

Allerdings werden die Variablen aus dem Datensatz nicht erkannt bei der cube/size Anpassung.

gefragt 26 Apr '19, 12:33

Erol's gravatar image

Erol
1612
Akzeptiert-Rate: 0%

bearbeitet 26 Apr '19, 14:16

(27 Apr '19, 00:11) Community

Du kannst die Daten mit visualization depends on aus der Tabelle in Variablen hinterlegen und die dann mit scatter/@pre marker code verwenden.

Öffne in Overleaf
\documentclass[tikz,border=3.14pt]{standalone}
\usepackage{filecontents}
\begin{filecontents*}{Quader.txt}
Laenge Breite Hoehe x y z
20 10 5 0 0 0
40 20 10 10 0 0
\end{filecontents*}
\usepackage{pgfplots}
\pgfplotsset{compat=1.16}
\begin{document}
\begin{tikzpicture}
\pgfplotsset{set layers}
\begin{axis}[% from section 4.6.4 of the pgfplotsmanual
        view={120}{40},
        width=320pt,
        grid=minor,
        xlabel={$x$},
        ylabel={$y$},
        zlabel={$z$},
        ]
\addplot3 [visualization depends on={\thisrow{Laenge} \as \Laenge},
visualization depends on={\thisrow{Breite} \as \Breite},
visualization depends on={\thisrow{Hoehe} \as \Hoehe},
scatter/@pre marker code/.append style={/pgfplots/cube/size x=\Laenge},%
scatter/@pre marker code/.append style={/pgfplots/cube/size y=\Breite},%
scatter/@pre marker code/.append style={/pgfplots/cube/size z=\Hoehe},%
scatter,only marks,mark=cube*,%mark size=5,
opacity=1]
 table[x expr={\thisrow{x}},y expr={\thisrow{y}},z
 expr={\thisrow{z}}] {Quader.txt};
    \end{axis}
\end{tikzpicture}
\end{document}

alt text

Permanenter link

beantwortet 27 Apr '19, 00:59

Community's gravatar image

Community
21
Akzeptiert-Rate: 56%

1

... geht natürlich auch mit ... table[x=x,y=y,z=z] {Quader.txt};

(27 Apr '19, 01:06) Community

Darauf wäre ich nie gekommen. Genau so wollte ich es. Vielen Dank für die schnelle Hilfe!

(27 Apr '19, 12:42) Erol
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:

×296
×12
×1

gestellte Frage: 26 Apr '19, 12:33

Frage wurde gesehen: 4,008 Mal

zuletzt geändert: 27 Apr '19, 12:42