Несколько двумерных гауссовых эллипсов на трехмерном графике

Несколько двумерных гауссовых эллипсов на трехмерном графике

Я хотел бы построить различные двумерные гауссовские распределения в виде затененных 2D-эллипсов в разных точках 3D-пространства. 2D-эллипсы, которые я бы построил, как предлагает Джейк вГауссовы эллипсоиды с использованием tikz, но технически это уже 3D-график. Есть ли возможность расширить этот метод?


Я придумал следующий пример (слева: пример того, как мне нравится ориентировать эллипсы, взятый изhttps://arxiv.org/abs/1611.03986, справа: мой вариант):

введите описание изображения здесьВывод вышеуказанного .tex-файла

Два основных момента заключаются в том, что

  • цветовая карта на самом деле не прозрачна, и оси внешней системы координат больше не видны,
  • и что я хотел бы иметь эллипсы в фиксированной точкеувхз-плоскость (это означает, что нижняя линия черных прямоугольников должна быть параллельнаИкс-ось и сжимается соответственно).
\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}

Связанный контент