pgfplots: Заполнение области между двумя кривыми в 3D

pgfplots: Заполнение области между двумя кривыми в 3D

Я пытаюсь создать рисунок, который поможет объяснить различные типы линейных интегралов. Он включает в себя кривую в 3 измерениях (толстая линия), кривую в плоскости xy, которой она следует (пунктирная линия), и проекции в плоскостях xz и yz. Я хотел бы, чтобы область между толстой черной кривой и пунктирной кривой была заполнена, но что бы я ни пробовал, я получаю либо отсутствие заливки, либо заливку, показанную на рисунке ниже. Я пробовалзаполнитьмеждуpackage, но это, похоже, не работает с 3D-графиками. Любые мысли о том, как этого добиться, будут с благодарностью приняты.

Вот MWE

\documentclass{standalone}

\usepackage{pgfplots}
\usepgfplotslibrary{fillbetween}

\begin{document}

\begin{tikzpicture}[
            declare function={mynorm(\m,\s) = 1/(2*\s*sqrt(pi))*exp(-    (x-\m)^2/(2*\s^2));}
            ]

\begin{axis}[
        view={135}{45},
        enlargelimits=false,
        grid=major,
        domain=0:16,
        y domain=0:4,
        samples=50,
        xlabel=$x$,
        ylabel=$y$,
        ]

    \addplot3 [domain=0:4, samples=50, samples y=0, smooth, fill=gray!60] (x,0,{mynorm(1,0.5)}) \closedcycle;
    \addplot3 [domain=0:16, samples=50, samples y=0, smooth, fill=gray!60] (0,x,{mynorm(1,0.5)}) \closedcycle;

    \addplot3 [thick,domain=0:4, samples=50, samples y=0, smooth, fill=gray] (x,x^2,{mynorm(1.0,0.5)});
    \addplot3 [domain=0:4, samples=50, samples y=0, smooth, dashed] (x,x^2,0);

\end{axis}

\end{tikzpicture}

\end{document}

что дает результат

введите описание изображения здесь

решение1

На самом деле fillbetweenу меня работает. Нужно только поместить фигуры на разные слои, чтобы они были видны и не перекрывали друг друга:

\documentclass{standalone}
\usepackage{pgfplots}
\usepgfplotslibrary{fillbetween}

\begin{document}

\begin{tikzpicture}[
    declare function={mynorm(\m,\s) = 1/(2*\s*sqrt(pi))*exp(-    (x-\m)^2/(2*\s^2));}
  ]

\begin{axis}[
    view={135}{45},
    enlargelimits=false,
    grid=major,
    domain=0:16,
    y domain=0:4,
    samples=50,
    xlabel=$x$,
    ylabel=$y$,
  ]

  \addplot3 [domain=0:4, samples=50, samples y=0, smooth, fill=gray!60, on layer=axis grid] (x,0,{mynorm(1,0.5)}) \closedcycle;
  \addplot3 [domain=0:16, samples=50, samples y=0, smooth, fill=gray!60, on layer=axis grid] (0,x,{mynorm(1,0.5)}) \closedcycle;

  \addplot3 [name path=A,thick,domain=0:4, samples=50, samples y=0, smooth] (x,x^2,{mynorm(1.0,0.5)});
  \addplot3 [name path=B,domain=0:4, samples=50, samples y=0, smooth, dashed, on layer=axis foreground] (x,x^2,0);
  \addplot3 [gray] fill between [of=A and B];
\end{axis}

\end{tikzpicture}

\end{document}

введите описание изображения здесь

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