如何在 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}