pgfplots 和 MATLAB 中的正弦函数。为什么会得到不同的结果?

pgfplots 和 MATLAB 中的正弦函数。为什么会得到不同的结果?

我在 pgfplots 和 MATLAB 中绘制了正弦函数绝对值的图表(查看图片)。为什么得到的结果不同?

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$},

你有:

在此处输入图片描述

相关内容