我想绘制以下分段函数:
我使用了以下代码:
\begin{tikzpicture}[
declare function={
func(\x)= (\x<-0.5) * (0) +
and(\x>=-0.5, \x<=0.5) * (1) +
(\x>0.5) * (0);
}
]
\begin{axis}[
axis x line=middle, axis y line=middle,
ymin=-0.25, ymax=1.25, ylabel=$y$,
xmin=-1, xmax=1, xlabel=$x$,
]
\addplot[domain=-1:1]{func(x)};
\end{axis}
\end{tikzpicture}
但输出与上面的图不一样:
答案1
通过使用const plot
pgfplots 选项:
\documentclass[border=3.141592]{standalone}
\usepackage{pgfplots}
\pgfplotsset{compat=1.17}
\begin{document}
\begin{tikzpicture}[
declare function={func(\x) = (\x<-0.5)*(0) +
and
(\x>=-0.5, \x<=0.5)*(1) +
(\x>0.5)*(0);}
]
\begin{axis}[
axis lines=middle,
ymin=-0.25, ymax=1.25, ylabel=$y$,
xmin=-1, xmax=1, xlabel=$x$,
const plot,
every axis plot post/.append style={thick},
]
\addplot[domain=-1:1]{func(x)};
\end{axis}
\end{tikzpicture}
\end{document}
附录: 正如您在函数声明中看到的那样,脉冲向右移动了一个样本。您可以通过两种方式纠正这一点:
- 使用@Rmano 的建议,通过坐标绘制你的脉搏
- 函数的正确定义:
declare function={func(\x) = (\x<-0.5)*(0) +
and
(\x>-0.51, \x<0.49)*(1) + % <---
(\x>0.5)*(0);}
其使用效果\addplot +[domain=-1:1]{func(x)};
,以及样品展示标记如下: