我有一个图,其 y 轴是线性的,具有固定精度且没有缩放。
\documentclass{独立} \使用包{pgfplots} \pgfplotsset{兼容=1.11} \开始{文档} \开始{tikzpicture} \开始{轴}[域=-0.1:0.1, yticklabel 样式={scaled ticks=false, /pgf/数字格式/固定, /pgf/数字格式/精度=3] \addplot+ { x^3 }; \end{轴} \结束{tikzpicture} \结束{文档}
y 刻度标签几乎没有表现力,因为 pgf 将中间的 0.0005 四舍五入为 0.001,产生了矛盾的标签。我并不想提高精度(页面空间限制),所以显然最好的解决方案是删除中间的“(-)0.001”刻度。有没有 pgfplots 选项可以实现这一点?一个选项是“不要放置刻度,以免标签四舍五入”、“标签之间的最小差异应为 0.001”或类似的。
我的文档中实际上有 100 个类似的图表,它们来自可能发生变化的数据,因此手动指定 y 刻度并不是首选方案。
答案1
一种可能性是比较修剪后的版本是否与原始刻度数不同。但这是一个相当普遍的规范,所以如果你的其他 99 个图有不同的奇怪间隔,我认为这不是万无一失的
\documentclass{standalone}
\pgfplotsset{compat=1.12}
\begin{document}
\begin{tikzpicture}
\begin{axis}[domain=-0.1:0.1,
yticklabel style={scaled ticks=false,
/pgf/number format/fixed,
/pgf/number format/precision=3},
yticklabel={%
\pgfmathprintnumberto[verbatim,fixed,precision=3]{\tick}\possiblytrimmedtick%
\pgfmathparse{\possiblytrimmedtick == \tick ? int(1):int(0)}%
\ifnum\pgfmathresult>0\relax$\tick$\else\fi%
}
]
\addplot+ { x^3 };
\end{axis}
\end{tikzpicture}
\end{document}