![使用 Tikz 和水平仪绘制](https://linux22.com/image/246318/%E4%BD%BF%E7%94%A8%20Tikz%20%E5%92%8C%E6%B0%B4%E5%B9%B3%E4%BB%AA%E7%BB%98%E5%88%B6.png)
如何在 Tikz 中生成从 0 到 10 的 f(x)=x 曲线,其中 x 轴为 (1,0)、(2,0) 等处的小直线,y 轴为 (0,1)、(0,2) 等处的小直线?
答案1
最简单的解决方案是使用pgfplots
基于 PGF/TikZ 构建的包。
\documentclass{article}
\usepackage{pgfplots}
\begin{document}
\begin{tikzpicture}
\begin{axis}
\addplot[const plot,
domain=0:10,
mark=none,
samples=11] {x};
\end{axis}
\end{tikzpicture}
\end{document}
查看手动的用于附加选项,如标题、图例、标记等。
您也可以保留 TikZ 符号,但您的弹药将受到限制。
\documentclass{article}
\usepackage{pgfplots}
\begin{document}
\begin{tikzpicture}[domain=0:10,samples=11]
\draw[very thin,color=gray] (-0.1,-1.1) grid (10,10);
\draw[->] (-0.2,0) -- (10.2,0) node[right] {$x$};
\draw[->] (0,-1.2) -- (0,10.2) node[above] {$f(x)$};
\draw[ultra thick] plot [const plot] (\x,\x);
\end{tikzpicture}
\end{document}
答案2
如果您只想使用 tikz 而不使用 pgfplots,这里有两种方法可以获取沿轴的刻度,我假设您想要获取的就是这个。我希望代码是不言自明的。
代码如下
\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{decorations.pathreplacing}
\begin{document}
%method 1 : with a loop
\begin{tikzpicture}
\draw[->] (0,0) -- (10.2,0) node[right] {$x$};
\foreach \k in {1,...,10}{\draw (\k,-0.05) -- ++(0,0.1);}
\draw[->] (0,0) -- (0,10.2) node[left] {$y$};
\foreach \k in {1,...,10}{\draw (-0.05,\k) -- ++(0.1,0);}
\draw[blue,domain=0:10] plot (\x,\x);
\end{tikzpicture}
%method 2 : with a decoration
\begin{tikzpicture}
\draw[->] (0,0) -- (10.2,0) node[right] {$x$};
\draw[decoration={ticks,segment length=1cm,amplitude=2pt},decorate] (0,0) -- (10.2,0);
\draw[->] (0,0) -- (0,10.2) node[left] {$y$};
\draw[decoration={ticks,segment length=1cm,amplitude=2pt},decorate] (0,0) -- (0,10.2);
\draw[blue,domain=0:10] plot (\x,\x);
\end{tikzpicture}
\end{document}
结果是