PGFplots 刻度标签中的模数计算

PGFplots 刻度标签中的模数计算

我正在打印一个图表,并希望使用 a_[0...3] 作为 x 轴上的刻度标签。现在我有 a[0...7] 作为标签,并寻找一种方法来打印 a[\tick mod 4](即 a_0、a_1、a_2、a_3、a_0、a_1、a_2、a_3)。我尝试使用在这里找到的解决方案(如何在 LaTeX 中计算 n 模 3?),但它们在行中使用时都会引发错误xticklabel={$a_{\pgfmathprintnumber[int trunc]{\tick}}$}

这是 MWE。有人能帮忙吗?

\documentclass{article}
\usepackage{pgfplots}
\begin{document}

\begin{tikzpicture}
   \begin{axis}[
         height=8cm,
         width=14.6cm,
         xtick={0,...,7},
         ytick={0,...,3},
         xticklabel={$a_{\pgfmathprintnumber[int trunc]{\tick}}$},
         yticklabel={$b_{\pgfmathprintnumber[int trunc]{\tick}}$}
   ]

   \addplot coordinates {(0,3) (1,2) (2,1) (3,0)} {};
   \addplot coordinates {(1,3) (2,2) (3,1) (4,0)} {};
   \addplot coordinates {(2,3) (3,2) (4,1) (5,0)} {};
   \addplot coordinates {(3,3) (4,2) (5,1) (6,0)} {};
   \end{axis}
\end{tikzpicture}

\end{document}

答案1

您可以按如下方式更改其中一行:

xticklabel={$a_{\pgfmathparse{int(mod(\tick,4))}\pgfmathresult}$},

\pgfmathparse将其参数作为数学表达式进行求值,但不返回结果。它通常处理浮点数,因此我们使用int将结果值截断为整数。\pgfmathresult打印最近一次调用的结果\pgfmathparse

相关内容