当pgfplots
用于 3D 图形并从表中读取数据时,有没有办法截断数据轴限值在环境中指定axis
?
以下是 MWE:
\documentclass[tikz]{standalone}
\usepackage{tikz}
\usepackage{pgfplots}
\pgfplotsset{compat=newest}
\usepackage{amsmath}
\begin{document}
\begin{tikzpicture}
\begin{axis}[%
width=16cm,height=8cm,
view={-45}{65},
scale only axis,
xmin=200,xmax=500,
xlabel={data1},
ymin=0,ymax=80,
ylabel={data2},
zmin=0,zmax=1,
zlabel={data3},
]
\addplot3 table[row sep=crcr] {
250 0 0\\
250 25 0.2\\
250 50 0.3\\
250 75 0.2\\
250 100 0\\
};
\addplot3 table[row sep=crcr] {
450 0 0.5\\
450 25 0.1\\
450 50 0\\
450 75 0.1\\
450 100 0.5\\
};
\end{axis}
\end{tikzpicture}%
\end{document}
在此示例中,ydata
每个表的 最高为100
,而选项ymax
中指定的值为。在这种情况下,输出如下所示:axis
80
请注意绘制的线条如何超出规定的轴限。有没有办法读取某个值(在本例中ymax
)的数据,或者在环境中指定一个选项axis
以避免显示超出轴限的曲线?
答案1
您可以通过设置来过滤掉超出轴范围的坐标restrict y to domain=0:80
:
\documentclass[tikz, border=5mm]{standalone}
\usepackage{tikz}
\usepackage{pgfplots}
\pgfplotsset{compat=newest}
\usepackage{amsmath}
\begin{document}
\begin{tikzpicture}
\begin{axis}[%
width=16cm,height=8cm,
view={-45}{65},
scale only axis,
xmin=200,xmax=500,
xlabel={data1},
ymin=0,ymax=80, restrict y to domain=0:80,
ylabel={data2},
zmin=0,zmax=1,
zlabel={data3},
]
\addplot3 table[row sep=crcr] {
250 0 0\\
250 25 0.2\\
250 50 0.3\\
250 75 0.2\\
250 100 0\\
};
\addplot3 table[row sep=crcr] {
450 0 0.5\\
450 25 0.1\\
450 50 0\\
450 75 0.1\\
450 100 0.5\\
};
\end{axis}
\end{tikzpicture}%
\end{document}