
Gostaria de traçar diferentes distribuições gaussianas bivariadas como elipses 2D sombreadas em diferentes pontos do espaço 3D. As elipses 2D que eu traçaria como Jake sugere emElipsóides gaussianos usando tikz, mas tecnicamente isso já é um enredo 3D. Existe a possibilidade de estender este método?
Eu criei o seguinte exemplo (à esquerda: exemplo de como gosto que as elipses sejam orientadas, retirado dehttps://arxiv.org/abs/1611.03986, certo: meu ansatz):
Dois pontos principais são que
- o mapa de cores não é realmente transparente e não é mais possível ver o eixo do sistema de coordenadas externo,
- e que eu gostaria de ter as elipses em um ponto fixosimnoxz-plano (isso significa que a linha inferior dos retângulos pretos deve ser paralela aox-eixo e compactado de acordo).
\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}