我想在给定值(0、0.05、0.1、...、0.5)处向我的 tikz 绘图添加 y 轴标签

我想在给定值(0、0.05、0.1、...、0.5)处向我的 tikz 绘图添加 y 轴标签
\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 的一部分)将标签编号剪切为小数点后两位。

相关内容