编辑

编辑

我修改了某人的代码并得到了我想要的三角函数图。但我想知道是否有比这更简单/优雅的代码。

具体来说,我希望有一个自动节点设置,而不是列出所有节点。另外,有没有更简单的方法来绘制三角函数图?我找到了 addplot 功能,但它似乎在当前代码/环境中不起作用(这是我更喜欢的)。

谢谢。

      \documentclass[oneside]{book}
      \usepackage{amsmath, amsthm}
      \usepackage{forloop, tikz, realboxes}

        \usepackage{tikz}
        \begin{document}
      \begin{tikzpicture}[x=1cm,y=1.5cm]
      \def\xmin{-2*pi}
      \def\xmax{2*pi}
      \def\ymin{-2}
      \def\ymax{2}

      % grid
      \draw[style=help lines, ystep=1, xstep=pi/4] (\xmin,\ymin) grid (\xmax,\ymax);

      % axes
      \draw[thick, ->] (\xmin-.25,0) -- (\xmax+.25,0) node[right] {$x$};
      \draw[thick, ->] (0,\ymin-.25) -- (0,\ymax+.25) node[above] {$y$};

      % xticks and yticks
      \foreach \x in {-6.28319,-5.4978, ..., 6.28319}{
        \draw (\x,2pt) -- (\x,-2pt);
        \node[fill=white] at (-2*pi, -.2) [below] {{$- 2\pi$}};
        \node[fill=white] at (-7*pi/4, -.1) [below] {\tiny{$\dfrac{-7\pi}{4}$}};
        \node[fill=white] at (-3*pi/2, -.1) [below] {\tiny{$\dfrac{-3\pi}{2}$}};
        \node[fill=white] at (-5*pi/4, -.1) [below] {\tiny{$\dfrac{-5\pi}{4}$}};
        \node[fill=white] at (-pi, -.2) [below] {{$-\pi$}};
        \node[fill=white] at (-3*pi/4, -.1) [below] {\tiny{$\dfrac{-3\pi}{4}$}};
        \node[fill=white] at (-pi/2, -.1) [below] {\tiny{$\dfrac{-\pi}{2}$}};
        \node[fill=white] at (-pi/4, -.1) [below] {\tiny{$\dfrac{-\pi}{4}$}};
        %
        \node[fill=white]  at (2*pi, -.2) [below] {{$2\pi$}};
        \node[fill=white]  at (7*pi/4, -.1) [below] {\tiny{$\dfrac{7\pi}{4}$}};
        \node[fill=white]  at (3*pi/2, -.1) [below] {\tiny{$\dfrac{3\pi}{2}$}};
        \node[fill=white]  at (5*pi/4, -.1) [below] {\tiny{$\dfrac{5\pi}{4}$}};
        \node[fill=white]  at (pi, -.2) [below] {{$\pi$}};
        \node[fill=white]  at (3*pi/4, -.1) [below] {\tiny{$\dfrac{3\pi}{4}$}};
        \node[fill=white]  at (pi/2, -.1) [below] {\tiny{$\dfrac{\pi}{2}$}};
        \node[fill=white]  at (pi/4, -.1) [below] {\tiny{$\dfrac{\pi}{4}$}};                                
        }

      \foreach \y in { -2, -1, 1, 2}
        \draw (2pt, \y) -- (-2pt, \y);
      \foreach \y in {-2, -1, 1, 2}
        \node[fill=white] at (-.1,\y) [left] {\y};

    \draw[ultra thick, red]
        (-2*pi-pi/4,1) sin (-3*pi/2-pi/4,2) cos (-pi-pi/4,1) sin (-pi/2-pi/4,0) cos (0-pi/4,1)
        sin (pi/2-pi/4,2) cos (pi-pi/4,1) sin (3*pi/2-pi/4,0) cos (2*pi-pi/4,1) sin (5*pi/2-pi/4,2);

    \end{tikzpicture}
    \end{document}

也就是说,

\draw[ultra thick, red]
        (-2*pi,0) sin (-3*pi/2,1) cos (-pi,0) sin (-pi/2,-1) cos (0,0)
        sin (pi/2,1) cos (pi,0) sin (3*pi/2,-1) cos (2*pi,0);

我想使用这样的东西:

\draw[scale=1,domain=-1.5:3.5,smooth,variable=\x,blue, thick] plot ({\x},{sin \x});

答案1

这是非常基本的。显然,您需要根据自己的目的调整刻度标签等。但您需要的代码如下所示:

\documentclass[tikz, border=5pt]{standalone}
\usepackage{pgfplots}
\begin{document}
\begin{tikzpicture}
\begin{axis}% ref: http://tex.stackexchange.com/a/147772/ by Harish Kumar
\addplot
  [
    domain=-0:2*pi,
    smooth,
    blue,
    thick,
  ]
  plot {sin(deg(x))};
\end{axis}
\end{tikzpicture}
\end{document}

basic plot

编辑

这是一个开头,说明了如何思考关于创建您想要的东西。也就是说,我尝试在这里演示您想要使用的方法来实现这一点。

基本上,如果你想自己绘制所有东西,这样你就可以完全直接地控制标签、线条、网格等,那么你可以这样做。但在这种情况下,你也需要自己绘制函数。或者你必须想办法让绘制的函数与轴等对齐。由于这正是等的\addplot设计目的,这似乎是在重新发明轮子,但归根结底,这是你的轮子。

另一方面,如果您希望能够使用您在问题中指出的那种语法来绘制函数,那么您需要\addplot等等,并且您需要使用它的功能来按照您想要的方式配置轴、标签等。

我在做这项工作时参考了几个参考资料 - 一些来自手册,pgfplots一些来自本网站的问题。我在代码中以注释的形式标明了问题及其作者,并附上了手册中最重要的要点的页面。

\documentclass[tikz,border=10pt]{standalone}
\usepackage{pgfplots,mathtools}
\pgfplotsset{compat=1.12}
\begin{document}
\begin{tikzpicture}
  \begin{axis}
    [% 290 of manual
      xtick={-7.0686,-6.2831,...,7.0686},
      xticklabels={% ref:http://tex.stackexchange.com/a/34958/ by Peter Grill
        ,
        {$-2\pi$},
        {\tiny$-\frac{7\pi}{4}$},
        {\tiny$-\frac{3\pi}{2}$},
        {\tiny$-\frac{5\pi}{4}$},
        {$-\pi$},
        {\tiny$-\frac{3\pi}{4}$},
        {\tiny$-\frac{\pi}{2}$},
        {\tiny$-\frac{\pi}{4}$},
        {$0$},
        {\tiny$\frac{\pi}{4}$},
        {\tiny$\frac{\pi}{2}$},
        {\tiny$\frac{3\pi}{4}$},
        {$\pi$},
        {\tiny$\frac{5\pi}{4}$},
        {\tiny$\frac{3\pi}{2}$},
        {\tiny$\frac{7\pi}{4}$},
        {$2\pi$},
      },
      grid=major,
      x=10mm,
      y=20mm,
      axis x line=center,% 218
      axis y line=center,
      xlabel={$x$},
      ylabel={$y$},
      every tick label/.style={fill=white},% 309
    ]
  \addplot% ref: http://tex.stackexchange.com/a/147772/ by Harish Kumar
    [
      domain=-2.25*pi:2.25*pi,
      smooth,
      blue,
      thick,
    ]
    plot {sin(deg(x))};
  \end{axis}
\end{tikzpicture}
\end{document}

sin with cutomised look

相关内容