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}