
Ich möchte verschiedene bivariate Gaußsche Verteilungen als schattierte 2D-Ellipsen an verschiedenen Punkten im 3D-Raum darstellen. Die 2D-Ellipsen würde ich darstellen, wie Jake es inGaußsche Ellipsoide mit Tikz, aber technisch gesehen ist das bereits ein 3D-Diagramm. Gibt es eine Möglichkeit, diese Methode zu erweitern?
Ich habe mir folgendes Beispiel ausgedacht (links: Beispiel, wie ich die Ellipsen gerne ausrichten würde, entnommen aushttps://arxiv.org/abs/1611.03986, rechts: mein Ansatz):
Zwei Hauptpunkte sind, dass
- die Farbkarte ist nicht mehr transparent und man kann die Achsen des äußeren Koordinatensystems nicht mehr sehen,
- und dass ich die Ellipsen gerne an einem festen Punkt hättejimxz-Ebene (das bedeutet, dass die untere Linie der schwarzen Rechtecke parallel zurX-Achse und entsprechend komprimiert).
\documentclass{standalone}
\usepackage{tikz,pgfplots}
\usepgfplotslibrary{patchplots}
\pgfplotsset{%
colormap={whitered}{color(0cm)=(transparent); color(1.cm)=(red)}%
}
\begin{document}
\begin{tikzpicture}[baseline,
declare function={bivar(\ma,\sa,\mb,\sb)=
1/(2*pi*\sa*\sb) * exp(-((x-\ma)^2/\sa^2 + (y-\mb)^2/\sb^2))/2;}]
% Outer coordinate system
\begin{axis}[
unit vector ratio*=1 1 1,
axis lines = middle,
view={120}{30},
domain = -10:10,
zmin = -5, zmax = 5,
xlabel = $x$, ylabel = $y$, zlabel = $z$,
x label style={at={(ticklabel* cs:1.)},anchor=north east},
y label style={at={(ticklabel* cs:1.)},anchor=north west},
z label style={at={(ticklabel* cs:1.)},anchor=south},
]
\coordinate (origin1) at (axis cs:0,-10,0);
\coordinate (origin2) at (axis cs:0,10,0);
\addplot3[no markers,opacity=0]{0}; % <- without this pseudo plot, the outer coordinate system does not work
\end{axis}
% Bivariate distribution 1
\begin{axis}[
at={(origin1)}, anchor={center},
width=3cm, height=3cm,
scale only axis,
axis equal image,
hide axis,
colormap name=whitered,
view={0}{90},
enlargelimits=false,
domain=-1.5:1.5, y domain=-1.5:1.5,
]
\addplot3 [surf, draw=none, samples=19, shader=interp, patch type=bilinear] {bivar(0,.1,0,.6)};
\end{axis}
% Bivariate distribution 2
\begin{axis}[
at={(origin2)}, anchor={center},
width=3cm, height=3cm,
scale only axis,
axis equal image,
hide axis,
colormap name=whitered,
view={0}{90},
enlargelimits=false,
domain=-1.5:1.5, y domain=-1.5:1.5,
]
\addplot3 [surf, draw=none, samples=19, shader=interp, patch type=bilinear] {bivar(0,.2,0,.3)};
\end{axis}
\end{tikzpicture}
\end{document}