我们可以展示通过设置将标签标记为分数:
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}