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, 06:33

Erol's gravatar image

Erol
161
Akzeptiert: 100%

bearbeitet 26 Apr, 08:16


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 26 Apr, 18:59

Murmeltier's gravatar image

Murmeltier
2.5k64

1

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

(26 Apr, 19:06) Murmeltier

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

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

×269
×10
×1

Frage gestellt: 26 Apr, 06:33

Frage wurde angeschaut: 168 Mal

Zuletzt aktualisiert: 27 Apr, 06:42