绘制三角函数图,轴上标有刻度线

绘制三角函数图,轴上标有刻度线

我提供了绘制三个三角函数的代码。(在序言中,我不得不在%命令前加上一个\usetikzlibrary{calc,angles,quotes},因为 LaTeX 无法用该命令编译它。它给了我错误can't find file 'tikzlibraryangles.code.tex'。MikTeX2.9 正在编译代码。)如何将标签“$\scriptstyle{y = \sin(x)}”、“$\scriptstyle{y = \cos(x)}”和“$\scriptstyle{y = \tan(x)}”直接添加到相应图形的 y 轴下方?箭头应该位于轴的两端。它们目前位于一端。是否有代码可以将刻度标记的标签(在节点中)放在图形的其他特征上?代码如何指示 TikZ 以半个单位的增量标记刻度标记?如何让代码指示 TikZ 以 \pi/2 的整数倍的增量标记刻度标记?在正切函数的图形中,渐近线是实线。如何获得虚线?在绘制正切函数的代码中,有“scaled x ticks={real:3.1415}, xtick scale label code/.code={}”。“{real:3.1415}”和“code/.code={}”指示 TikZ 在 x 轴上绘制什么?

\documentclass{article}
\usepackage{amsmath}
\usepackage{tikz}
%\usetikzlibrary{calc,angles,quotes}
\usepackage{pgfplots}


\pgfkeys{/pgfplots/Axis Style/.style={
    width=13.5cm, height=5cm,
    axis x line=center, 
    axis y line=middle, 
    samples=100,
    ymin=-1.5, ymax=1.5,
    xmin=-7.0, xmax=7.0,
    domain=-2*pi:2*pi
}}


\begin{document}

\begin{tikzpicture}
\begin{axis}[
    Axis Style,
    xtick={
        -6.28318, -4.7123889, -3.14159, -1.5708,
        1.5708, 3.14159, 4.7123889, 6.28318
    },
    xticklabels={
        $-2\pi$, $-3\pi/2$, $-\pi$, $\pi/2$,
        $\pi/2$, $\pi$, $3\pi/2$, $2\pi$
    }
]
\addplot [mark=none, ultra thick, blue] {sin(deg(x))};
\end{axis}
\end{tikzpicture}

\begin{tikzpicture}
\begin{axis}[
    Axis Style,
    xtick={
        -6.28318, -4.7123889, -3.14159, -1.5708,
        1.5708, 3.14159, 4.7123889, 6.28318
    },
    xticklabels={
        $-2\pi$, $-3\pi/2$, $-\pi\hspace{0.30cm}$, $\pi/2$,
        $\pi/2$, $\pi\hspace{0.10cm}$, $3\pi/2$, $\hspace{0.25cm} 2\pi$
    }
]
\addplot [mark=none, ultra thick, red] {cos(deg(x))};
\end{axis}
\end{tikzpicture}

\begin{tikzpicture}
\begin{axis}[
    Axis Style,
    xtick={-6.28318, -4.7123889, ..., 6.28318},
    scaled x ticks={real:3.1415},
    xtick scale label code/.code={},
]
\addplot [mark=none, thin, brown] {tan(deg(x))};
\end{axis}
\end{tikzpicture}


\end{document}

答案1

你问了好多问题!通常最好在这个网站上问一个重点突出的问题;)

但,我们试图解答您的疑问……

标签,例如 $y = \sin(x),会使图表更美观。我猜直接在 y 轴下。

例如,你可以使用

\begin{axis}[
    Axis Style,
    xtick={
        -6.28318, -4.7123889, -3.14159, -1.5708,
        1.5708, 3.14159, 4.7123889, 6.28318
    },
    xticklabels={
        $-2\pi$, $-3\pi/2$, $-\pi$, $\pi/2$,
        $\pi/2$, $\pi$, $3\pi/2$, $2\pi$
    },
    ylabel={$y=\sin(x)$}, %<---- new bit
]

或者,例如,

...
\addplot [mark=none, ultra thick, blue] {sin(deg(x))};
\addlegendentry{$y=\sin(x)$} %<---- new bit
...

您可能还想使用以下方法调整图例位置legend pos=...

箭头应位于轴的两端。目前它们位于一端。

您可以使用,

\pgfkeys{/pgfplots/Axis Style/.style={
    width=.3\textwidth, %height=5cm,
    axis x line=center, 
    axis y line=middle, 
    samples=100,
    ymin=-1.5, ymax=1.5,
    xmin=-7.0, xmax=7.0,
    domain=-2*pi:2*pi,
    axis line style=<->,  %<----- new bit
}}

或以其他方式使用pgfplotsset(如下所示)。

该比例适用于正弦和余弦函数的图形,但不适用于正切函数。也许 y 轴包括 -10 和 10。

例如,尝试使用

\begin{axis}[
    Axis Style,
    xtick={-6.28318, -4.7123889, ..., 6.28318},
    scaled x ticks={real:3.1415},
    xtick scale label code/.code={},
    ymin=-10,ymax=10, %<---- new bit
]

更改此图的比例可能会使沿轴的标签被正切函数的图覆盖。是否有代码可以将标签(在节点中)置于图的其他特征之上?

我相信你想要axis on top这个的钥匙。

目前,三个图的 y 轴对齐。如何才能使 x 轴对齐?

删除图形之间的空白行 - 请注意,您需要调整文本宽度以使它们很好地适应 - 考虑geometry为此包。

mark=none 指示 TikZ 做什么? mark 还有哪些其他选项?

mark=none意味着您只能获得曲线,而不会获得沿途采样点处的圆圈(或其他标记)。很多其他选项 - 请参阅第 4.7 节pgfplots了解详情。

这是可以用来实现我所提到的内容的完整代码。

% arara: pdflatex
% !arara: indent: {overwrite: yes}
\documentclass{article}
\usepackage{pgfplots}
\usepackage[margin=1cm]{geometry}
\pgfplotsset{Axis Style/.style={
    width=.3\textwidth, %height=5cm,
    axis x line=center,
    axis y line=middle,
    samples=100,
    ymin=-1.5, ymax=1.5,
    xmin=-7.0, xmax=7.0,
    domain=-2*pi:2*pi,
    axis line style=<->,
}}


\begin{document}

\begin{tikzpicture}
    \begin{axis}[
            Axis Style,
            xtick={
                -6.28318, -4.7123889, -3.14159, -1.5708,
                1.5708, 3.14159, 4.7123889, 6.28318
            },
            xticklabels={
                $-2\pi$, $-3\pi/2$, $-\pi$, $\pi/2$,
                $\pi/2$, $\pi$, $3\pi/2$, $2\pi$
            },
            ylabel={$y=\sin(x)$},
        ]
        \addplot [mark=none, ultra thick, blue] {sin(deg(x))};
        \addlegendentry{$y=\sin(x)$}
    \end{axis}
\end{tikzpicture}
\begin{tikzpicture}
    \begin{axis}[
            Axis Style,
            xtick={
                -6.28318, -4.7123889, -3.14159, -1.5708,
                1.5708, 3.14159, 4.7123889, 6.28318
            },
            xticklabels={
                $-2\pi$, $-3\pi/2$, $-\pi\hspace{0.30cm}$, $\pi/2$,
                $\pi/2$, $\pi\hspace{0.10cm}$, $3\pi/2$, $\hspace{0.25cm} 2\pi$
            }
        ]
        \addplot [mark=none, ultra thick, red] {cos(deg(x))};
    \end{axis}
\end{tikzpicture}
\begin{tikzpicture}
    \begin{axis}[
            Axis Style,
            xtick={-6.28318, -4.7123889, ..., 6.28318},
            scaled x ticks={real:3.1415},
            xtick scale label code/.code={},
            ymin=-10,ymax=10,
        ]
        \addplot [mark=none, ultra thick, brown] {tan(deg(x))};
    \end{axis}
\end{tikzpicture}


\end{document}

答案2

使用 PSTricks 轻松定制的模板。

\documentclass[pstricks,border=0pt,12pt,dvipsnames]{standalone}
\usepackage{amsmath}
\usepackage{pstricks-add}
\usepackage{pst-plot}
% \usepackage{pst-math} provides ATAN
\usepackage[nomessages]{fp}

\FPeval\XMin{0-2*pi}
\FPeval\XMax{2*pi}
\FPeval\YMin{0-pi}
\FPeval\YMax{5*pi/3}

\FPeval\XOL{0-1/3} % of DeltaX
\FPeval\XOR{1/3} % of DeltaX
\FPeval\YOB{0-1/3} % of DeltaY
\FPeval\YOT{1/3} % of DeltaY

\FPset\TrigLabelBase{3}
\FPeval\DeltaX{pi/TrigLabelBase}
\FPeval\DeltaY{pi/TrigLabelBase}

\FPeval\AxisL{XMin+DeltaX*XOL}
\FPeval\AxisR{XMax+DeltaX*XOR}
\FPeval\AxisB{YMin+DeltaY*YOB}
\FPeval\AxisT{YMax+DeltaY*YOT}

\newlength\Width\Width=12cm
\newlength\Height\Height=8cm

\newlength\llx\llx=-5pt
\newlength\urx\urx=15pt
\newlength\lly\lly=-5pt
\newlength\ury\ury=15pt


\psset
{
    llx=\llx,
    lly=\lly,
    urx=\urx,
    ury=\ury,
    xtrigLabels=true,
    ytrigLabels=true,
    trigLabelBase=\TrigLabelBase,
    labelFontSize=\scriptstyle,
    xAxisLabel=$x$,
    yAxisLabel=$y$,
    algebraic,
    plotpoints=500,
}

\def\f{Pi*sin(x)}
\def\fp{Derive(1,\f)}

\def\g{2*asin(x/(2*Pi))}

\begin{document}
\pslegend[lt]{%
    \color{NavyBlue}\rule{12pt}{1pt} & \color{NavyBlue} $y=\pi\sin x$ \\
    \color{Red}\rule{12pt}{1pt} & \color{Red} $y=\pi\cos x$ \\
    \color{ForestGreen}\rule{12pt}{1pt} & \color{ForestGreen} $y=2\sin^{-1}\left(\tfrac{x}{2\pi}\right)$
}
\begin{psgraph}
    [
        dx=\DeltaX,
        dy=\DeltaY,
        linecolor=gray,
        tickcolor=gray,
        ticksize=-3pt 3pt,
        axespos=top,
    ]{<->}(0,0)(\AxisL,\AxisB)(\AxisR,\AxisT){\dimexpr\Width-\urx+\llx}{!}%{\dimexpr\Height-\ury+\lly}
    \psaxes
    [
        dx=\DeltaX,
        dy=\DeltaY,
        labels=none,
        subticks=5,
        tickwidth=.4pt,
        subtickwidth=.2pt,
        tickcolor=Red!30,
        subtickcolor=ForestGreen!30,
        xticksize=\YMin\space \YMax,
        yticksize=\XMin\space \XMax,
        subticksize=1,
    ](0,0)(\XMin,\YMin)(\XMax,\YMax)
    \psplot[linecolor=NavyBlue]{\XMin}{\XMax}{\f}
    \psplot[linecolor=Red]{\XMin}{\XMax}{\fp}
    \psplot[linecolor=ForestGreen]{\XMin}{\XMax}{\g}
    % -------------------
    % tangent and normal
    \psplotTangent[linecolor=Magenta]{Pi 3 div 2 mul}{1.5}{\f}
    \psplotTangent[linecolor=Cyan,Derive={-1/\fp}]{Pi 3 div 2 mul}{1.5}{\f}
    %
    % sum
    \psplot[linecolor=Rhodamine]{\XMin}{\XMax}{Sum(i,0,1,7,(-1)^(i)*x^(2*i)/fact(2*i))}
\end{psgraph}
\end{document}

在此处输入图片描述

文档

本节说明模板中使用的设置。

在此处输入图片描述

相关内容