我想在 -2.5 和 2.5 区间内绘制 y = |sin(pi*x)| 的图形。(图形位于 x 轴上或上方,两端的高度均为 1。)TikZ 绘制一条通过原点的线。图形的标签应位于图形的右端 - 它可以延伸到 x 轴之外。如何将标签“x”添加到 x 轴并将“y”添加到 y 轴?
\documentclass[10pt]{amsart}
\usepackage{tikz}
\usepackage{pgfplots}
\pgfplotsset{compat=1.11}
\begin{document}
\hspace*{\fill}
\begin{tikzpicture}
\begin{axis}[width=4in,axis equal image,
xmax=3,ymax=1.5,
axis lines=middle,
restrict y to domain=-1:2,
enlargelimits,
axis line style={shorten >=-0.25cm,shorten <=-0.25cm,latex-latex},
ticklabel style={fill=white},
extra x ticks={-2,-1,0,1,2},
%extra x tick style={grid=none}
]
\addplot[domain=-2.5:2.5,mark=none,samples=200] {abs(sin(pi(x)))} node[fill=white, below left, yshift=-3pt]{$y=\vert\sin(\pi x)\vert$};
\end{axis}
\end{tikzpicture}
\hspace{\fill}
答案1
正如 percusse 所指出的,添加xlabel
和ylabel
轴选项可以解决标签问题。
另一个问题是绘制正确的函数,这可以通过修改 中的公式来解决\addplot
。请注意 本身以度为单位进行运算,因此需要将pgfplots
弧度转换为度。还必须进行显式乘法:而不是。deg()
pi*x
pi(x)
编辑:感谢 Jake 的评论,在pgfplots
1.11 或更高版本中还有另一种使用弧度的方法。引用更改日志http://pgfplots.sourceforge.net/:
- 新功能:'trig format plots=rad' 允许在三角函数计算中使用弧度
因此,如果trig format plots=rad
添加到轴选项,deg()
就不再需要。
使用示例deg()
\documentclass[10pt]{amsart}
\usepackage{tikz}
\usepackage{pgfplots}
\pgfplotsset{compat=1.11}
\begin{document}
\hspace*{\fill}
\begin{tikzpicture}
\begin{axis}[width=4in,axis equal image,
xmax=3,ymax=1.5,
axis lines=middle,
enlargelimits,
axis line style={shorten >=-0.25cm,shorten <=-0.25cm,latex-latex},
ticklabel style={fill=white},
extra x ticks={0},
xlabel=$x$,ylabel=$y$,
clip=false,
]
\addplot[domain=-2.5:2.5,mark=none,samples=200] {abs(sin(deg(pi*x)))} node[fill=white, right]{$y=\vert\sin(\pi x)\vert$};
\end{axis}
\end{tikzpicture}
\end{document}