
Me gustaría trazar diferentes distribuciones gaussianas bivariadas como elipses 2D sombreadas en diferentes puntos del espacio 3D. Las elipses 2D que trazaría como sugiere Jake enElipsoides gaussianos usando tikz, pero técnicamente eso ya es una trama en 3D. ¿Existe la posibilidad de ampliar este método?
Se me ocurrió el siguiente ejemplo (izquierda: ejemplo de cómo me gusta que estén orientadas las elipses, tomado dehttps://arxiv.org/abs/1611.03986, derecha: mi ansatz):
Dos puntos principales son que
- el mapa de colores no es realmente transparente y ya no se puede ver el eje del sistema de coordenadas exterior,
- y que me gustaria tener las elipses en un punto fijoyen elxz-plano (esto significa que la línea inferior de los rectángulos negros debe ser paralela alX-eje y comprimido en consecuencia).
\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}