我想绘制一个图表并仅显示低 x 位置和高 x 位置。现在我使用两次\addplot
来restrict x domain
实现这一点:
\documentclass{standalone}
\usepackage{tikz}
\usepackage{pgfplots}
\pgfplotsset{compat = newest}
\begin{document}
\begin{tikzpicture}
\begin{axis}[xmin=-3, xmax=5]
\addplot[restrict x to domain=-3:-1]
coordinates {
(-3, 8.31160034e-02)
(-2, 2.54685628e-02)
(-1, 7.40715288e-03)
(0, 2.10192154e-03)
(1, 5.87352989e-04)
(2, 1.62269942e-04)
(3, 3.40715288e-03)
(4, 7.40715288e-03)
(5, 2.40715288e-02)
};
\addplot[restrict x to domain=1:5]
coordinates {
(-3, 8.31160034e-02)
(-2, 2.54685628e-02)
(-1, 7.40715288e-03)
(0, 2.10192154e-03)
(1, 5.87352989e-04)
(2, 1.62269942e-04)
(3, 3.40715288e-03)
(4, 7.40715288e-03)
(5, 2.40715288e-02)
};
\end{axis}
\end{tikzpicture}
\end{document}
我想知道是否只用一个就可以完成这个技巧\addplot
?
答案1
您可以使用
restrict expr to domain={<expr>}{min:max}
在这种情况下,使用<expr>
的任何适当函数x
。在您的特定示例中,使用{x*x}{1:+inf}
会起作用,因为特定范围的选择恰好具有+/-1
作为其端点。一般来说,可以使用
restrict expr to domain={(x>=a1)*(x<=b1)+(x>=a2)*(x<=b2)}{1:+inf}
限制x
位于 和 两个区间之一a1:b1
,a2:b2
因为为真时返回 ,否则(x>=a)
返回。从计算溢出的角度来看,这种表达式也更好。或者,您可以使用进行“与”和进行“或”运算:1
0
&&
||
restrict expr to domain={(x>=-3)&&(x<=-1)||(x>=1)&&(x<=5)}{1:1}
注意到&&
具有更高的优先级。
\documentclass{article}
\usepackage{pgfplots}
\pgfplotsset{compat = newest}
\begin{document}
\begin{tikzpicture}
\begin{axis}[xmin=-3, xmax=5]
\addplot[restrict expr to domain={x*x}{1:+inf}]
coordinates {
(-3, 8.31160034e-02)
(-2, 2.54685628e-02)
(-1, 7.40715288e-03)
(0, 2.10192154e-03)
(1, 5.87352989e-04)
(2, 1.62269942e-04)
(3, 3.40715288e-03)
(4, 7.40715288e-03)
(5, 2.40715288e-02)
};
\end{axis}
\end{tikzpicture}
\begin{tikzpicture}
\begin{axis}[xmin=-3, xmax=5]
\addplot[restrict expr to domain={(x>=-3)*(x<=-1)+(x>=1)*(x<=5)}{1:+inf}]
coordinates {
(-3, 8.31160034e-02)
(-2, 2.54685628e-02)
(-1, 7.40715288e-03)
(0, 2.10192154e-03)
(1, 5.87352989e-04)
(2, 1.62269942e-04)
(3, 3.40715288e-03)
(4, 7.40715288e-03)
(5, 2.40715288e-02)
};
\end{axis}
\end{tikzpicture}
\end{document}