Hallo,

ich möchte einen Quader im 3D-Raum plotten, dem an spezifischen Stellen (Ecken und Kantenmittelpunkten) eine Farbe über eine numerische Vorgabe zugewiesen soll. Zwischen Ecken und Kantenmittelpunkten soll interpoliert werden. Über eine Skala am Rand der Grafik soll die Farbe zum entsprechenden numerischen Wert angegeben werden. Das Datenfile was ich dazu vorliegen habe, sieht wie folgt aus:

Open in writeLaTeX
-.7745966692414835  -.7745966692414835  -.7745966692414835         .1714677640603567    
-.7745966692414835  -.7745966692414835  .0000000000000000          .2743484224965707    
-.7745966692414835  -.7745966692414835  .7745966692414835          .1714677640603567    
-.7745966692414835  .0000000000000000   -.7745966692414835         .2743484224965707    
-.7745966692414835  .0000000000000000   .0000000000000000          .4389574759945131    
-.7745966692414835  .0000000000000000   .7745966692414835          .2743484224965707    
-.7745966692414835  .7745966692414835   -.7745966692414835         .1714677640603567    
-.7745966692414835  .7745966692414835   .0000000000000000          .2743484224965707    
-.7745966692414835  .7745966692414835   .7745966692414835          .1714677640603567    
.0000000000000000   -.7745966692414835  -.7745966692414835         .2743484224965707    
.0000000000000000   -.7745966692414835  .0000000000000000          .4389574759945131    
.0000000000000000   -.7745966692414835  .7745966692414835          .2743484224965707    
.0000000000000000   .0000000000000000   -.7745966692414835         .4389574759945131    
.0000000000000000   .0000000000000000   .0000000000000000          .7023319615912209    
.0000000000000000   .0000000000000000   .7745966692414835          .4389574759945131    
.0000000000000000   .7745966692414835   -.7745966692414835         .2743484224965707    
.0000000000000000   .7745966692414835   .0000000000000000          .4389574759945131    
.0000000000000000   .7745966692414835   .7745966692414835          .2743484224965707    
.7745966692414835   -.7745966692414835  -.7745966692414835         .1714677640603567    
.7745966692414835   -.7745966692414835  .0000000000000000          .2743484224965707    
.7745966692414835   -.7745966692414835  .7745966692414835          .1714677640603567    
.7745966692414835   .0000000000000000   -.7745966692414835         .2743484224965707    
.7745966692414835   .0000000000000000   .0000000000000000          .4389574759945131    
.7745966692414835   .0000000000000000   .7745966692414835          .2743484224965707    
.7745966692414835   .7745966692414835   -.7745966692414835         .1714677640603567    
.7745966692414835   .7745966692414835   .0000000000000000          .2743484224965707    
.7745966692414835   .7745966692414835   .7745966692414835          .1714677640603567

Hier stehen die erste, zweite und dritte Spalte für die Koordinaten x,y und z. Die vierte Spalte steht für eine Intensität, die als numerischer Wert für die Farbkodierung dienen soll (bspw. grau bis blau). Vielleicht hat jemand einen Tipp!? Bisher hatte ich an folgendes gedacht, allerdings ist die Farbzuordnung hier der z-Achse vorbehalten:

Open in writeLaTeX
\documentclass{standalone}
\usepackage{pgfplots}
\begin{document}
\begin{tikzpicture}
\begin{axis}[axis equal]
\addplot3[patch] file plotdata/data.txt};
\end{axis}
\end{tikzpicture}
\end{document}

Viele Grüße, Dirk

gefragt 09 Aug '14, 18:14

Dirk's gravatar image

Dirk
2654610
Akzeptiert-Rate: 40%

bearbeitet 10 Aug '14, 10:02


Die Quelle der Daten fuer die Farbzuordnung wird ueber den key point meta angegeben, der standardmaessig auf point meta=f(x) konfiguriert ist (d.h. den z wert fuer eine 3d achse).

In Deinem Fall ist point meta=explicit das richtige, da Du zu jedem Datenpunkt explizit die richtigen Werte im Eingabefile angibst.

Fuer eine komplette Farbzuordnung braeuchtest Du dann wohl noch eine colorbar.

Soweit komme ich mit, danach verstehe ich leider Dein Datenformat nicht so richtig, und auch nicht die Art, wie Du Dir das resultat vorstellst. Ein patch plot generiert normalerweise Flaechenelemente und erwartet eine sequenz von Dreiecken als Eingabe. Du hast patch gewaehlt, aber Dein Datenformat scheint bestenfalls degenerierte Dreiecke zu enthalten (d.h. welche auf einer Linie). Ist es das, was Du wolltest?

Hier ist jedenfalls das Resultat, mit ein paar Anpassungen, damit man sich im 3d Raum (hoffentlich) leichter zu recht findet:

Open in writeLaTeX
\documentclass{standalone}
\usepackage{pgfplots}
\pgfplotsset{compat=1.9}
\begin{document}
\begin{tikzpicture}
\begin{axis}[
    axis equal image,
    enlargelimits=false,
    colorbar,
    %grid=both,
    3d box=complete*,
]
\addplot3[patch,scatter,point meta=explicit] file {P.dat};
\end{axis}
\end{tikzpicture}
\end{document}

alt text

Ich habe noch die komplette 3d box dargestellt sowie mit scatter farbkodierte Marker eingefuegt. Das axis equal image und enlargelimits=false sorgt dafuer, dass die auesseren Achsenlinien genau auf den quaderkanten zu liegen kommen - Du kannst mal gucken, ob Du das magst.


EDIT

Stefan wird mich zwar hauen, aber ich habe gerade nach der Antwort geguckt und kann meine Ideen nur hier hinschreiben. Daher: zu Deinen untenstehenden Fragen hier zumindest ein paar naheliegende Antworten:

Open in writeLaTeX
 \documentclass{standalone}
\usepackage{pgfplots}
\pgfplotsset{compat=1.9}
\begin{document}
\begin{tikzpicture}
\begin{axis}[
    axis equal image,
    enlargelimits=false,
    colorbar,
    grid=major,
    3d box=complete*,
    xtick=data,
    ytick=data,
    ztick=data,
    colorbar style={
        /pgf/number format/frac,
        % oder
        %ytick={0.2,0.4,0.6},
        %yticklabels={$\frac15$, $\frac25$, $\frac35$},
    },
]
\addplot3[only marks,scatter,point meta=explicit] file {P.dat};
\end{axis}
\end{tikzpicture}
\end{document}

alt text

grid=major malt an alle major tick positionen Grid linien. Die major tick positionen sind mit xtick=data genau an den Datenpunkten gewaehlt, damit bekommst Du Dein Gitter hin.

An der colorbar habe ich ein paar "dummy" keys eingefuegt, die richtungsweisend sein koennen. Dazu stellst Du aber am Besten eine extra Frage.

Permanenter link

beantwortet 09 Aug '14, 21:38

cfeuersaenger's gravatar image

cfeuersaenger
3.7k23
Akzeptiert-Rate: 34%

bearbeitet 10 Aug '14, 08:59

Schick mit diesen Hilfs-"rechten Winkeln".

(09 Aug '14, 22:08) cis

@Christian: Danke!

(10 Aug '14, 09:54) Dirk

@cfeuersaenger Hauen doch nicht... Das Wohlfühlen unserer TeX-Freunde ist auch mir wichtiger als Regeln. Ist nur eine Empfehlung, eigenständige Fragen mit Lösungen helfen anderen leichter als ein Thread mit sechs Problemen gemischt. Wobei Komplettlösungen auch schön sind. Vielen Dank für die Antwort mit sehr guter Erklärung!

(10 Aug '14, 10:46) stefan ♦♦
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

gestellte Frage: 09 Aug '14, 18:14

Frage wurde gesehen: 6,648 Mal

zuletzt geändert: 10 Aug '14, 10:46