我在 pgfplots 和 MATLAB 中绘制了正弦函数绝对值的图表(查看图片)。为什么得到的结果不同?
pgf图:
\begin{tikzpicture}[比例=1.2] \开始{轴}[ 域 = 0:2*pi, yticklabels={-2,-1,0,1,2}, 轴线 = 中间, 轴在顶部 = true, 网格 = 主要, 网格样式 = {虚线,线宽 = .1pt,绘制 = 灰色!30,/pgfplots/on 图层 = 轴背景}, ] \addplot+[无标记,颜色=蓝色] {abs(sin(deg(x)))}; \end{轴} \结束{tikzpicture}
MATLAB:
x = 0:0.01:2*pi; y = sin(x); z = 绝对值(y); 绘图(x,z,... '线宽',1,... '颜色','蓝色');
答案1
您需要使用更多样本来确保 pi 是用于计算 y 值的 x 值之一。
可以使用命令的可选参数来设置样本数量\begin{axis}
。
\begin{axis}[samples=1000,...]
答案2
这里有几个问题。
首先,样本数量是默认情况下太小,不适合你的情况--- 你应该要求更多,如果你想获得域中间的值,使用奇数个。
samples = 101,
然后,使用xticklabels
将给定的标签放在(自动计算的)刻度位置...您几乎永远不应该xticklabels
在没有明确的情况下使用xtick
。在这种情况下,它们不是必需的。
此外(但这是一个风格问题),我认为如果图形稍微有点呼吸效果,并指示坐标 (0,0),效果会更好;删除 即可实现这两种效果axis lines = middle
。因此:
\documentclass[border=10pt]{standalone}
\usepackage{tikz}
\usepackage{pgfplots}\pgfplotsset{compat=1.13}
\usetikzlibrary{arrows.meta,positioning,calc}
\begin{document}
\begin{tikzpicture}[]
\begin{axis}[
domain = 0:2*pi,
samples = 101,
axis on top = true,
grid = major,
grid style = {dashed, line width=.1pt, draw=gray!30,
/pgfplots/on layer=axis background},
]
\addplot+[no marks, color=blue] {abs(sin(deg(x)))};
\end{axis}
\end{tikzpicture}
\end{document}
...为了展示这xticklabels
一点,如果你添加:
xtick = {0, 1.5708, ..., 7},
xticklabels = {$0\mathstrut$, $\pi/2$, $\pi\mathstrut$, $3\pi/2$, $2\pi\mathstrut$},
你有: