3D Tikzpicture 和反转轴,图形轮廓的绘制顺序不正确

3D Tikzpicture 和反转轴,图形轮廓的绘制顺序不正确

pgfplots我正在尝试使用和绘制函数的 3D 轮廓图tikz。但是,我必须反转 Y 轴以匹配我在其他插图中显示坐标轴的方式。轮廓图的正确显示方式如下所示,想象一下 Y 轴编号被反转。

正确的图像

我为此图绘制的 MWE 如下所示,但它包含y dir=reverse翻转 Y 轴值的命令。但是,当我执行此操作时,轮廓的绘制顺序似乎不正确,如下图所示。图中的凸起似乎隐藏在后面,这不符合预期。

我该如何在我的图中解决这个问题?我要绘制一个像第一幅图一样的轮廓图,只是 Y 轴值翻转了。

错误图像

\documentclass[letterpaper]{article}

\usepackage{pgfplots,tikz}
\pgfplotsset{compat=1.13}
\pgfplotsset{colormap={grays}{gray(0cm)=(0.5);gray(1cm)=(0)}}
\pgfplotsset{samples=31}


\begin{document}

    \begin{tikzpicture}
        \begin{axis}[%
            view={60}{30},
            axis equal image,
            width=\linewidth,
            xlabel style={align=center, anchor=north, rotate=-46.1},
            xlabel={Lateral Stress \\ $q_x$ [kPa]},
            xticklabel={\pgfmathparse{4*\tick}$\pgfmathprintnumber{\pgfmathresult}$},
            ylabel={Lateral Distance $y$ [m]},
            ylabel style={rotate=16.1},
            zlabel={Depth $z$ [m]},
            y dir=reverse
            ]
            \addplot3[
            patch,
            fill=white,
            opacity=0.8,
            samples=31,
            domain=-1:10,
            y domain=0:-6,
            point meta=x
            ]
            ({(1/4)*2*-70/(3.1415*2)*(2^3*y/(2^2+y^2)^2)*(%
                %
                ((8-x)*(3*(2^2+y^2)+2*(8-x)^2)/(2^2+(8-x)^2+y^2)^1.5)-%
                %
                ((1-x)*(3*(2^2+y^2)+2*(1-x)^2)/(2^2+(1-x)^2+y^2)^1.5)%
                )}, x, y);
            \addlegendentry{$q_x$}
        \end{axis}
    \end{tikzpicture}

\end{document}

答案1

我只添加z buffer=sort(并使用了最新的兼容模式,但这对解决方案并不重要)来获得

\documentclass[letterpaper]{article}

\usepackage{pgfplots}
\pgfplotsset{compat=1.17}
\pgfplotsset{colormap={grays}{gray(0cm)=(0.5);gray(1cm)=(0)}}
\pgfplotsset{samples=31}


\begin{document}

    \begin{tikzpicture}
        \begin{axis}[%
            view={60}{30},
            axis equal image,
            width=\linewidth,
            xlabel style={align=center, anchor=north, rotate=-46.1},
            xlabel={Lateral Stress \\ $q_x$ [kPa]},
            xticklabel={\pgfmathparse{4*\tick}$\pgfmathprintnumber{\pgfmathresult}$},
            ylabel={Lateral Distance $y$ [m]},
            ylabel style={rotate=16.1},
            zlabel={Depth $z$ [m]},
            y dir=reverse
            ]
            \addplot3[z buffer=sort,
            patch,
            fill=white,
            opacity=0.8,
            samples=31,
            domain=-1:10,
            y domain=0:-6,
            point meta=x
            ]
            ({(1/4)*2*-70/(3.1415*2)*(2^3*y/(2^2+y^2)^2)*(%
                %
                ((8-x)*(3*(2^2+y^2)+2*(8-x)^2)/(2^2+(8-x)^2+y^2)^1.5)-%
                %
                ((1-x)*(3*(2^2+y^2)+2*(1-x)^2)/(2^2+(1-x)^2+y^2)^1.5)%
                )}, x, y);
            \addlegendentry{$q_x$}
        \end{axis}
    \end{tikzpicture}

\end{document}

在此处输入图片描述

相关内容