如何改变轴刻度中的坐标?

如何改变轴刻度中的坐标?

我正在尝试构建一个简单的一维随机游走。我使用 \foreach 并希望对 ax (步长) 和 y (ε) 进行增量。

\pgfmathsetseed{1}
\begin{tikzpicture}
    \begin{axis}[
        xmin=2018, xmax=2040,
        ymin=0, ymax=200,
        xlabel={$year$}, ylabel={$value$},
        axis x line=bottom,
        axis y line=center]

        \coordinate (start) at (axis cs:2018,100);
        \foreach \year in {2018,...,2040}  {
            \coordinate (next) at ($ (start) + (1, rand*5) $);
            \draw[red] (start) -- (next);   
            \coordinate (start) at (next);
        }
    \end{axis}
\end{tikzpicture} 

我收到错误“尺寸太大”。如果我为线设置尺寸(例如厘米)

\coordinate (next) at ($ (start) + (0.5cm, rand*0.5cm) $);

然后代码就可以正常工作,但步长与轴不再相关。有没有办法让 xshift 在轴上等于一步,而无需硬编码轴宽度(以厘米为单位)并指定相应的 xshift(以厘米为单位)?

答案1

axis cs仅允许绝对位置。如果您需要相对位置,则必须使用axis direction cs。有关更多信息,请参阅 pgfplots 文档中的“4.17.1 访问图形元素中的轴坐标”部分。

例子:

\documentclass{article}
\usepackage{pgfplots}
\pgfplotsset{compat=1.15}
\begin{document}
\pgfmathsetseed{1}
\begin{tikzpicture}
  \begin{axis}[
    xmin=2018, xmax=2040,
    ymin=0, ymax=200,
    xlabel={year}, ylabel={value},
    axis x line=bottom,
    axis y line=center
  ]
%
    \coordinate (start) at (2018,100);
    \foreach \year in {2018,...,2040}
      \draw[red](start) -- + (axis direction cs:1, rand*5)coordinate(start);
%
    \coordinate (start) at (2018,100);
    \draw[blue](start) foreach \year in {2018,...,2040}
      {-- ++ (axis direction cs:1, rand*5)coordinate(start)};
%
  \end{axis}
\end{tikzpicture}
\end{document}

结果:

在此处输入图片描述

相关内容