tikz pgfplots - 2 addplot3-Befehle ineinander zeichnen

Tabellen und Grafiken erstellen und anordnen


TobiBader
Forum-Newbie
Forum-Newbie
Beiträge: 2
Registriert: Mi 25. Mai 2016, 18:16

tikz pgfplots - 2 addplot3-Befehle ineinander zeichnen

Beitrag von TobiBader »

Hallo golatex-Team,
ich bin noch neu in latex und arbeite mit pgfplots in 3D.
Aus einer FEM-Berechnung habe ich eine Ausgangsdatei, welche aus dreieckigen Elementen mit Knotenwerten besteht. Von diesen Dreiecken stelle ich lediglich die Flächen mit der shader=interp dar, aber nicht die Kanten. (das alleine funktioniert :D )
Außerdem habe ich eine Datei mit den Linien der gesamten Außenkonturen, von welchen ich in einem separaten addplot3-Befehl lediglich die sichtbaren Außenkonturen dargestellt haben möchte.

Gibt es eine Möglichkeit (evtl. in der axis-Umgebung) pgfplots mitzuteilen, dass er die beiden addplot3-befehle nicht übereinander zeichnen soll, sondern ineinander ?

Das erwartete Ergebnis wäre dann folgendes:
Er zeichnet deckend die sichtbare, interpolierte Oberfläche des Körpers. Die nicht sichtbaren Kanten aus der Kontur-Datei werden nicht dargestellt, da sie von der Oberfläche verdeckt werden. Die sichtbaren Kanten der Kontur-Datei werden dargestellt, da sie sich genau auf der Verbindung zweier Oberflächen-Elemente befinden.

Als Minimalbeispiel habe ich eine Kontur.tex datei angehängt, bei welcher sich im addplot3-Aufruf die Beispielliste der Kontur-Linien befindet, und eine Flaeche.tex, bei welcher sich im addplot3 die zugehörige Liste der Knotenfarbwerte für die Flächeninterpolation befindet. Die beiden separaten Ergebnisse habe ich in einen Screenshot gepackt - kann man beide Ergebnisse ineinander packen?

Oder kann ich vielleicht die beiden separaten Listen mit ihren individuellen Einstellungen (shader/surf/line whith...) in einem einzigen addplot3-Befehl aufrufen?

Wenn ihr mir helfen könntet wäre ich wirklich sehr dankbar,
Beste Grüße
Tobi
Dateianhänge
kontur und oberflaeche.PNG
kontur und oberflaeche.PNG (97.49 KiB) 1583 mal betrachtet
Flaeche.tex
(951 Bytes) 264-mal heruntergeladen
Kontur.tex
(884 Bytes) 264-mal heruntergeladen

Bartman
Forum-Meister
Forum-Meister
Beiträge: 2466
Registriert: Do 16. Jul 2009, 21:41
Wohnort: Hessische Provinz

Beitrag von Bartman »

Ich möchte die folgende Umgestaltung der von Dir veröffentlichten Informationen vorschlagen:

Kontur.tex
\documentclass[12pt]{article}
\usepackage{pgfplots}


\begin{document}

%
%\begin{figure}[!ht]
\begin{tikzpicture}
\begin{axis}[view/h=120,xlabel=$x$,ylabel=$y$]

\addplot3[
opacity=1,
table/row sep=\\,
patch,
patch type=line,
line width=3pt,
color=black,
% vertex count=5,
% patch table with point meta={%
patch table={%
% pt1 pt2 pt3 pt4 pt5 cdata
0 1 \\
1 6 \\
6 5 \\
5 4 \\
4 3 \\
3 2 \\
2 0 \\
0 8 \\
8 6 \\
8 3 \\
1 7 \\
7 4 \\
7 2 \\
}]
table []{
x y z c\\
0 2 0 0 \\%0
2 2 0 0 \\%1
0 1 3 3 \\%2
0 0 3 3 \\%3
1 0 3 3 \\%4
2 0 2 2 \\%5
2 0 0 0 \\%6
1 1 3 10 \\%7
0 0 0 10 \\%8
1 0 3 0 \\%9=4 copy
1 1 2 0 \\%10=7 copy
};

% replicate the vertex list to show \coordindex: 
\addplot3[only marks,nodes near coords=\coordindex]
table[row sep=\\] {
0 2 0\\ 2 2 0\\ 0 1 3\\ 0 0 3\\
1 0 3\\ 2 0 2\\ 2 0 0\\ 1 1 2\\ 0 0 0\\
};

\end{axis}
\end{tikzpicture}
%\end{figure}

\end{document}
Flaeche.tex
\documentclass[12pt]{article}
\usepackage{pgfplots}


\begin{document}

%
%\begin{figure}[!ht]
\begin{tikzpicture}
\begin{axis}[view/h=120,xlabel=$x$,ylabel=$y$]

\addplot3[
opacity=1,
table/row sep=\\,
patch,
% patch type=polygon,
shader=interp,
% line width=1pt,
% vertex count=5,
% patch table with point meta={%
patch table={%
% pt1 pt2 pt3 pt4 pt5 cdata
0 1 7 \\
1 6 5 \\
1 5 4 \\
1 4 7 \\
7 4 2 \\
2 4 3 \\
0 7 2 \\
0 8 1 \\
1 8 6 \\
6 8 5 \\
5 8 4 \\
4 8 3 \\
3 8 2 \\
2 8 0 \\
}]
table [point meta=\thisrow{c}]{
x y z c \\
0 2 0 0 \\%0
2 2 0 0 \\%1
0 1 3 3 \\%2
0 0 3 3 \\%3
1 0 3 3 \\%4
2 0 2 2 \\%5
2 0 0 0 \\%6
1 1 3 10 \\%7
0 0 0 10 \\%8
1 0 3 0 \\%9=4 copy
1 1 2 0 \\%10=7 copy
};

% replicate the vertex list to show \coordindex: 
\addplot3[only marks,nodes near coords=\coordindex]
table[row sep=\\] {
0 2 0\\ 2 2 0\\ 0 1 3\\ 0 0 3\\
1 0 3\\ 2 0 2\\ 2 0 0\\ 1 1 2\\ 0 0 0\\
};

\end{axis}
\end{tikzpicture}
%\end{figure}

\end{document}
Bild
Dateianhänge
kontur und oberflaeche.PNG
kontur und oberflaeche.PNG (97.49 KiB) 1559 mal betrachtet

TobiBader
Forum-Newbie
Forum-Newbie
Beiträge: 2
Registriert: Mi 25. Mai 2016, 18:16

Kann keiner helfen?

Beitrag von TobiBader »

Erstmal Danke für das Umgestalten, so ist es besser :)
Aber habt ihr eine Lösung für mein Problem oder vielleicht einen Tipp? Für Hilfe wäre ich wirklich sehr dankbar :)

Antworten