pgfplots 中的 3D 线图

pgfplots 中的 3D 线图

pgfplots我对和有以下问题\addplot3。我在 [0,1]x[0,1] 中有一个图表,它应该显示一个网格图和一个线图,该线图描绘了网格上的一条特定线。线图的特征是以下三元组 (x, 0.8-x, f(x,y)),实际上是 (x, 0.8-x, f(x))。在下面的代码中,调用 f(x,y) ,fgm调用 f(x) fgmct

这是工作代码:

\documentclass{standalone}
\usepackage{pgfplots}

\pgfplotsset{compat=1.6}

\begin{document}

\pgfplotsset{
colormap={whitered}{color(0cm)=(white); color(1cm)=(orange!75!red)}
}

\begin{tikzpicture}[
scale=1,
declare function={fgm(\theta)=1+\theta*(1-2*x)*(1-2*y);},
declare function={fgmct(\theta,\val)=1+\theta*(1-2*x)*(1-2*(\val-x));}]

\begin{axis}[
colormap name=whitered,
width=15cm,
view={-45}{60},
enlargelimits=false,
disabledatascaling,
grid=major,
domain=0:1,
y domain=0:1,
samples=30,
xlabel=$x_1$,
ylabel=$x_2$,
zlabel={$f(x_1,x_2)$},
colorbar horizontal,
colorbar style={
    at={(0,0.9)},
    anchor=south west,
    width=0.25*\pgfkeysvalueof{/pgfplots/parent axis width},
    title={$f(x_1,x_2)$}
}
]

\addplot3 [surf] {fgm(-0.5)};
\addplot3 [domain=0:0.8, y domain=0:0.8, samples y=30, black!70, smooth] (x, 0.8-x, {fgmct(-0.5,0.8)});

\end{axis}
\end{tikzpicture}
\end{document}

事情的经过如下: 在此处输入图片描述

我觉得我应该只看到穿过表面图的凹线,而看不到环绕线和穿过它的直线。如果大家能指出我在这里做错了什么,我将不胜感激。

答案1

您意外地生成了网格图而不是线图。

命令\addplot3总是采样矩阵数据值。如果您希望它只采样一条线,则必须说samples y=1。因此,需要采用线图命令,如下所示:

\documentclass{standalone}
\usepackage{pgfplots}

\pgfplotsset{compat=1.6}

\begin{document}

\pgfplotsset{
colormap={whitered}{color(0cm)=(white); color(1cm)=(orange!75!red)}
}

\begin{tikzpicture}[
scale=1,
declare function={fgm(\theta)=1+\theta*(1-2*x)*(1-2*y);},
declare function={fgmct(\theta,\val)=1+\theta*(1-2*x)*(1-2*(\val-x));}]

\begin{axis}[
colormap name=whitered,
width=15cm,
view={-45}{60},
enlargelimits=false,
disabledatascaling,
grid=major,
domain=0:1,
y domain=0:1,
samples=30,
xlabel=$x_1$,
ylabel=$x_2$,
zlabel={$f(x_1,x_2)$},
colorbar horizontal,
colorbar style={
    at={(0,0.9)},
    anchor=south west,
    width=0.25*\pgfkeysvalueof{/pgfplots/parent axis width},
    title={$f(x_1,x_2)$}
}
]

\addplot3 [surf] {fgm(-0.5)};
\addplot3 [domain=0:0.8, samples y=1, black!70,smooth] (x, 0.8-x, {fgmct(-0.5,0.8)});

\end{axis}
\end{tikzpicture}
\end{document}

在此处输入图片描述

您会看到,我删除了 ,y domain并设置了samples y=1。此示例仅在 中x

相关内容