根据位置确定单独的刻度标签样式

根据位置确定单独的刻度标签样式

我正在寻找一种解决方案,将刻度标签限制在轴限制范围内(见图,不扩大限制)。 在此处输入图片描述

这个想法是将自定义刻度标签样式应用于第一个刻度:

\documentclass{report}
\usepackage{pgf}
\usepackage{pgfplots}
\pgfplotsset{compat=newest}
\begin{document}
\begin{tikzpicture}
\begin{axis}[%
scale only axis,
xmin=-1000,
xmax=1000,
ymin=0,
ymax=5,
xtick={-1000,-500,...,1000},
x tick label style={xshift={\pgfmathparse{\ticknum == 0 ? "10pt" : "0pt"}\pgfmathresult}},
]    
\draw (-300,0.5)--(1000,1);
\end{axis}
\end{tikzpicture}
\end{document}  

不幸的是,这给出了“!未定义的控制序列。”将类似的代码应用于标签文本本身效果很好。不建议使用额外的刻度(pgfplots:如何在轴上的指定值处指定自定义刻度和标签),因为第一个和最后一个刻度必须具有不同的样式。那么问题是,如何根据单个刻度标签的值或位置为其自定义刻度标签样式?

谢谢你的帮助

答案1

我认为它更容易使用extra x ticks

extra x ticks={-1000,1000},
extra x tick labels={\rlap{-1000},\llap{1000}}

在此处输入图片描述

代码:

\documentclass{report}
\usepackage{pgf}
\usepackage{pgfplots}
\pgfplotsset{compat=newest}
\begin{document}
\begin{tikzpicture}
\begin{axis}[%
scale only axis,
xmin=-1000,
xmax=1000,
ymin=0,
ymax=5,
xtick={-500,0,500},
extra x ticks={-1000,1000},
extra x tick labels={\rlap{-1000},\llap{1000}}
]    
\draw (-300,0.5)--(1000,1);
\end{axis}
\end{tikzpicture}
\end{document}

另一种可能性是

xtick={-1000,-500,...,1000},
xticklabels={\rlap{-1000},500,0,500,\llap{1000}}

但如果xshift标签应该取决于\ticknum你可以使用类似

x tick label style={xshift={\ticknum == 0 ? "15pt" : (\ticknum == 4 ? "-10pt" : "0pt")}}

在此处输入图片描述

代码:

\documentclass{report}
\usepackage{pgf}
\usepackage{pgfplots}
\pgfplotsset{compat=newest}
\begin{document}
\begin{tikzpicture}
\begin{axis}[%
scale only axis,
xmin=-1000,
xmax=1000,
ymin=0,
ymax=5,
xtick={-1000,-500,...,1000},
x tick label style={xshift={\ticknum == 0 ? "15pt" : (\ticknum == 4 ? "-10pt" : "0pt")}},
]    
\draw (-300,0.5)--(1000,1);
\end{axis}
\end{tikzpicture}
\end{document}

相关内容