使用自定义轴绘图

使用自定义轴绘图

如何在 LaTeX 中创建具有自定义轴、颜色和标签的图形,如下所示:在此处输入图片描述

如果有人知道创建它的确切代码,那将非常有帮助,但如果不知道,也不要担心!

答案1

正如 Sigur 在他的评论中所说,您的图形取自 TikZ 手册:

\documentclass{standalone}

\usepackage{tikz}

\begin{document}
\begin{tikzpicture}[domain=0:4]
  \draw[very thin,color=gray] (-0.1,-1.1) grid (3.9,3.9);
  \draw[->] (-0.2,0) -- (4.2,0) node[right] {$x$};
  \draw[->] (0,-1.2) -- (0,4.2) node[above] {$f(x)$};
  \draw[color=red]    plot[id=x]   function{x}           node[right] {$f(x) =x$};
  \draw[color=blue]   plot[id=sin] function{sin(x)}       node[right] {$f(x) = \sin x$};
  \draw[color=orange] plot[id=exp] function{0.05*exp(x)} node[right] {$f(x) = \frac{1}{20} \mathrm e^x$};
\end{tikzpicture}

\end{document}

在此处输入图片描述

该示例可以通过 来翻译pdflatex -shell-escape file.tex-shell-escape因为plot function调用,所以 是必要的gnuplot)。


但是,“使用自定义轴绘制图形”可能超出了这个例子的范围。具体来说,“自定义轴”可能涉及自动计算的限制、科学数据范围、自动绘制的轴以及合适的刻度,甚至更多。有pgfplots基于 tikz 构建的绘图包可以做到这一点。使用 pgfplots,它将变成

\documentclass{standalone}

\usepackage{pgfplots}
\pgfplotsset{compat=1.8}

\begin{document}

\begin{tikzpicture}
    \begin{axis}[
        domain=0:4,
        axis lines=center,
        enlargelimits=upper,
        grid=major,
        xlabel=$x$,
        ylabel=$f(x)$,
        % 
        % disable clipping at axis box to show nodes:
        clip=false,
    ]
    \addplot[red] {x}   
        node[pos=1,right] {$f(x)=x$};

    \addplot[orange] {1/20 * exp(x)} 
        node[pos=1,right] {$f(x)=\frac{1}{20} \mathrm e^x$};

    \addplot[blue] {sin(deg(x))}
        node[pos=1,right] {$f(x)=\sin(x)$};
    \end{axis}
\end{tikzpicture}
\end{document}

在此处输入图片描述

请注意,它只需要pdflatex file.tex。不同之处在于,普通的 tikz 示例为轴和网格发出明确的绘图命令。此外,刻度标记和网格线之间没有区别,也没有刻度标签(这需要两个\foreach循环)。pgfplots示例需要进行微调,因为 pgfplots 的默认配置是带框的轴。此外,pgfplots 通常使用选项生成图例,legend entries因此我们必须添加clip=false以允许 tikz 样式的图例大于轴。


以下是更简单的样式,其中图例不能使用 pgfplots(和默认的 pgfplots 样式)重叠:

\documentclass{standalone}

\usepackage{pgfplots}
\pgfplotsset{compat=1.8}

\begin{document}

\begin{tikzpicture}
    \begin{axis}[
        domain=0:4,
        grid=major,
        xlabel=$x$,
        ylabel=$f(x)$,
        legend entries={
            $f(x) = x$,
            $f(x)=\frac{1}{20} \mathrm e^x$,
            $f(x)=\sin(x)$
        },
        legend pos=outer north east,
    ]
    \addplot[red] {x};

    \addplot[orange] {1/20 * exp(x)};

    \addplot[blue] {sin(deg(x))};
    \end{axis}
\end{tikzpicture}
\end{document}

在此处输入图片描述

相关内容