在我的图中,我有一个条形图(标记dummy
如下),其刻度标签需要以不同的方式排版。这是我目前的尝试(也是最小示例),但还不太奏效:
\documentclass{article}
\usepackage{pgfplots}
\usepackage{etoolbox}
\begin{document}
\begin{tikzpicture}
\begin{axis}[
ybar,
symbolic x coords={foo,bar,dummy},
xtick=data,
xticklabel={\ifdefstrequal{\tick}{dummy}{\textcolor{gray}{\tick}}{\tick}}]
\addplot coordinates {
(foo,2)
(bar,4)
(dummy,3)
};
\end{axis}
\end{tikzpicture}
\end{document}
现在,我肯定需要匹配名称symbolic x coords
;遗憾的是,比较\ticknum
不是一个选项,因为条形图的位置dummy
会随着情节的不同而变化,而且我不想xticklabel
每次都触及定义。那么有没有办法对进行适当的字符串比较呢\tick
?
答案1
您可以使用该ifthen
包:
\documentclass{article}
\usepackage{pgfplots}
\usepackage{ifthen}
\begin{document}
\begin{tikzpicture}
\begin{axis}[
ybar,
symbolic x coords={foo,bar,dummy},
xtick=data,
xticklabel=\ifthenelse{\equal{\tick}{dummy}}{\textcolor{red}{\tick}}{\tick}]
\addplot coordinates {
(foo,2)
(bar,4)
(dummy,3)
};
\end{axis}
\end{tikzpicture}
\end{document}
如果您想使用etoolbox
,则必须使用\ifdefstring{<macro>}{<string>}
,它将宏的内容与字符串进行比较。
\documentclass{article}
\usepackage{pgfplots}
\usepackage{etoolbox}
\begin{document}
\begin{tikzpicture}
\begin{axis}[
ybar,
symbolic x coords={foo,bar,dummy},
xtick=data,
xticklabel=\ifdefstring{\tick}{dummy}{\textcolor{red}{\tick}}{\tick}]
\addplot coordinates {
(foo,2)
(bar,4)
(dummy,3)
};
\end{axis}
\end{tikzpicture}
\end{document}