使用 PGFPlots:如何手动输入刻度作为分数?

使用 PGFPlots:如何手动输入刻度作为分数?

我们可以展示通过设置将标签标记为分数:

xticklabel style={/pgf/number format/frac}

然而,我们如何才能手动输入刻度点作为分数?

仅使用xtick={0,2/3,1}不起作用,请参见下面的 MWE。

 \documentclass{article}
 \usepackage{pgfplots}
 \pgfplotsset{width=9cm,compat=1.5}
 \begin{document}
 \begin{tikzpicture}
 \begin{axis}[
 xticklabel style={/pgf/number format/frac},
 domain=0:1,
 samples=9,
 xtick={0,2/3,1} ]
 \addplot { x };
 \end{axis}
 \end{tikzpicture}
 \end{document}

答案1

PGFPlots 不会解析xtick列表中给出的表达式。您可以定义自己的键来执行此操作并生成用于刻度标签的列表。

请注意,为了2/3正确打印,您需要使用/pgf/number format/frac shift=2(或1)来降低算法的容忍度。

 \documentclass{article}
 \usepackage{pgfplots}
 \pgfplotsset{width=9cm,compat=1.5}

 \makeatletter
 \pgfplotsset{
    xtick parsed/.code={
        \c@pgf@counta 0\relax
        \foreach \x in {#1} {
            \pgfmathparse{\x}
            \ifnum\c@pgf@counta=0
                \xdef\pgfplots@xtick{\pgfmathresult}
            \else
                \xdef\pgfplots@xtick{\pgfplots@xtick,\pgfmathresult}
            \fi
            \global\advance\c@pgf@counta 1\relax
        }
    }
 } 
 \makeatother

 \begin{document}
 \begin{tikzpicture}
 \begin{axis}[
 xticklabel style={/pgf/number format/frac, /pgf/number format/frac shift=2},
 domain=0:1,
 samples=9,
 xtick parsed={0, 1/3, 2/3, 1}]
 \addplot { x };
 \end{axis}
 \end{tikzpicture}
 \end{document}

相关内容