\documentclass{article}
\usepackage{pgfplots}
\begin{document}
%me learning how to draw stuff in tikz
\begin{tikzpicture}[]
\draw[->] (0,0) -- (17,0) node[right] {$x$};
\draw[->] (0,0) -- (0,10) node[above] {$f(x)$};
\draw (1,-1) rectangle (3,0);
\draw (3,-1) rectangle (5,0);
\draw (5,-1) rectangle (7,0);
\draw (7,-1) rectangle (9,0);
\draw (9,-1) rectangle (11,0);
\draw (11,-1) rectangle (13,0);
\draw (13,-1) rectangle (15,0);
\end{tikzpicture}
\end{document}
答案1
这是一个使用循环的选项。它使用命令\foreach
,其语法如下:
\foreach <control sequence> in {<first number>,<second number>,...,<last number>}{%
<do this>
}%
这里的诀窍是,第一个和第二个数字具有特定的增量,解析器会记住该增量作为循环之间的距离。显然,最后一个数字是要评估的最后一个元素。
我也曾经使用\pgfmathprintnumber
来漂亮地打印数字。语法有点明显,但可选参数(和 之间[
)]
可以包含相当长的可能选项列表,在这里重申意义不大。您可能希望使用自己的格式,为此,请查阅发行版附带的文档。可以使用texdoc pgfmanual
或提示文档texdoc tikz
。我的tikz
手册版本在第 950 页有数字打印。
\documentclass{article}
\usepackage{pgfplots}
\begin{document}
\begin{tikzpicture}[]
\draw[->] (0,0) -- (17,0) node[right] {$x$};
\draw[->] (0,0) -- (0,10.5) node[above] {$f(x)$};% increased y height by .5
\draw (1,-1) rectangle (3,0);
\draw (3,-1) rectangle (5,0);
\draw (5,-1) rectangle (7,0);
\draw (7,-1) rectangle (9,0);
\draw (9,-1) rectangle (11,0);
\draw (11,-1) rectangle (13,0);
\draw (13,-1) rectangle (15,0);
\foreach\i in {0,1,...,10}{%
\pgfmathparse{\i/20}%
\edef\tmp{\pgfmathresult}
\draw (-.2,\i) -- (0,\i);
\node at (-.75,\i){$\pgfmathprintnumber[precision=2,fixed,fixed zerofill]{\tmp}$};%
}
\end{tikzpicture}
\end{document}
pgfplots
如果您要绘制的图形相对复杂,您可能还需要查看软件包。
答案2
TikZ
并不是pgfplots
相同的程序。实际上,pgfplots
它基于 TikZ,专门用于绘制图表。要学习它们,您需要阅读它们的手册(对于 TikZ,至少要阅读第 3 章:TikZ ist kein Zeichenprogramm)。有很多示例可以引导您获得所需的知识 :-)
对于 TikZ 中的 MWE,请尝试:
\documentclass[tikz,border=2mm] {standalone}%{article}
\begin{document}
%me learning how to draw stuff in tikz
\begin{tikzpicture}
\draw[->] (0,0) -- (14,0) node[right] {$x$};
\draw[->] (0,0) -- (0,8) node[above] {$f(x)$};
\foreach \i in {1,2,...,13}% for x ticks and labels
\draw (\i,0.1) -- (\i,-0.1) node[below] {\i};
\foreach \i in {1,2,...,7}% for y ticks and labels
\draw (0.1,\i) -- (-0.1,\i) node[left] {\i};
\end{tikzpicture}
\end{document}
编辑:一些解释:
\foreach
我在计算轴刻度和标签位置时使用了循环。Shoved 是简单情况,刻度标签为整数。正如您在问题标题中提到的,您希望y
范围在 0 到 0.5 之间,步长为 0.05。对于此标签,您需要将y \foreach
循环更改为
\foreach \i in {0,0.05,...,0.51}
\draw (0.1,15*\i) -- (-0.1,15*\i) node[left] {\pgfmathprintnumber{\i}};
我使用数学引擎(TikZ 的一部分)将标签编号剪切为小数点后两位。