最近,我遇到了一个奇怪的错误,它不允许我使用手动指定的代码重新缩放颜色条上的刻度。
请考虑以下示例:
\documentclass[tikz,border=10pt]{standalone}
\usepackage{pgfplots}
\pgfplotsset{
colormap/viridis,
}
\begin{document}
\begin{tikzpicture}
\begin{axis}[
domain=1e3:10e3,
scaled x ticks=manual:{}{\pgfmathparse{#1/1000}},
scaled y ticks=manual:{}{\pgfmathparse{#1/1000}},
colorbar,
colorbar style={
scaled y ticks=manual:{}{\pgfmathparse{#1/1000}},
},
]
\addplot [mesh,ultra thick] {x};
\end{axis}
\end{tikzpicture}
\end{document}
x
和刻度y
按 1000 倍缩小(例如更改 SI 前缀),但不显示缩放比例,因为该信息是用单位编码的。颜色条出现“NaN”显然是不希望的,应该修复,但适用于轴的相同代码不适用于颜色条。
答案1
缩放在颜色栏中不起作用的原因是参数有两个扩展。在 TeX 中,#1
指的是第一个参数(如果没有第一个参数,则什么也没有),而目的是#1
扩展到刻度数。
这里的问题是,当 TeX 发现参数是什么时colorbar style
,它会进行第一次扩展,由于没有参数,因此\pgfmathparse{#1/1000}
扩展为\pgfmathparse{/1000}
无效的 NaN。
为了解决这个问题,必须将缩放比例指定为\pgfmathparse{##1/1000}
。在上述有问题的扩展过程中,这会\pgfmathparse{#1/1000}
根据需要扩展为 ,然后可以使用它来正确缩放颜色条的刻度:
\documentclass[tikz,border=10pt]{standalone}
\usepackage{pgfplots}
\pgfplotsset{
colormap/viridis,
}
\begin{document}
\begin{tikzpicture}
\begin{axis}[
domain=1e3:10e3,
scaled x ticks=manual:{}{\pgfmathparse{#1/1000}},
scaled y ticks=manual:{}{\pgfmathparse{#1/1000}},
colorbar,
colorbar style={
scaled y ticks=manual:{}{\pgfmathparse{##1/1000}},
},
]
\addplot [mesh,ultra thick] {x};
\end{axis}
\end{tikzpicture}
\end{document}