我知道已经有很多关于刻度标签指数以及如何消除它们的问题得到了解答,但经过广泛的搜索,我还是无法找到我特定问题的答案。
请看以下示例:
\documentclass[crop,10pt]{standalone}
\usepackage[english]{babel}
\usepackage{pgfplots}
\usepackage[space-before-unit,range-units = repeat]{siunitx}
\begin{document}%
\setlength{\linewidth}{246pt}%
\begin{tikzpicture}
\begin{axis}[
width=\linewidth,
ytick pos = left,
xtick pos = left,
enlargelimits=false,
clip=false,
axis on top,
tick align = outside,
yticklabel style={%
/pgf/number format/fixed,
/pgf/number format/precision=1,
/pgf/number format/fixed zerofill
},
xlabel={length (\si{\meter})},
ylabel={length (\si{\meter})},
]
\addplot
coordinates
{(1,0.0005) (2,0.001) (3,0.0015)};
\end{axis}
\end{tikzpicture}
\end{document}
图表和刻度标签看起来就像我想要的那样。我现在唯一想做的就是去掉 y 轴上方的“ *10^{-3} ”并(手动)将 ylabel 更改为毫米。当我使用该选项时scaled ticks=false
,这将再次更改刻度标签,我必须将它们显示为 0.0005、0.0010 和 0.0015,而不是 0.5、1.0 和 1.5,这看起来很丑。所以问题是:有没有办法去掉指数(不显示它)而不改变刻度标签?(当然,任何其他解决方案也会受到赞赏)
谢谢你的帮助,
约翰
答案1
这正是units
图书馆的用途。
它允许您为轴指定 SI 基本单位(在本例中为y unit=m
),如果您允许库更改数字的基数(通过设置change y base=true
),您可以指定将应用于标签和数字的 SI 前缀(通过设置y SI prefix=milli
)。
可以使用 来控制标签中单位的格式unit markings=parenthesis
,例如:
\documentclass[border=5mm]{standalone}
\usepackage[english]{babel}
\usepackage{pgfplots}
\usepgfplotslibrary{units}
\usepackage[space-before-unit,range-units = repeat]{siunitx}
\begin{document}%
\setlength{\linewidth}{246pt}%
\begin{tikzpicture}
\begin{axis}[
width=\linewidth,
ytick pos = left,
xtick pos = left,
enlargelimits=false,
clip=false,
axis on top,
tick align = outside,
unit markings=parenthesis,
y unit=m, change y base=true, y SI prefix=milli,
yticklabel style={%
/pgf/number format/fixed,
/pgf/number format/precision=1,
/pgf/number format/fixed zerofill
},
xlabel={length (\si{\meter})},
ylabel={length},
]
\addplot
coordinates
{(1,0.0005) (2,0.001) (3,0.0015)};
\end{axis}
\end{tikzpicture}
\end{document}
答案2
您可以使用ytick scale label code/.code={}
:
\documentclass[crop,10pt]{standalone}
\usepackage[english]{babel}
\usepackage{pgfplots}
\usepackage[space-before-unit,range-units = repeat]{siunitx}
\begin{document}%
\setlength{\linewidth}{246pt}%
\begin{tikzpicture}
\begin{axis}[
width=\linewidth,
ytick pos = left,
xtick pos = left,
enlargelimits=false,
clip=false,
axis on top,
tick align = outside,
yticklabel style={%
/pgf/number format/fixed,
/pgf/number format/precision=1,
/pgf/number format/fixed zerofill
},
xlabel={length (\si{\meter})},
ylabel={length (\si{\meter})},
ytick scale label code/.code={}
]
\addplot
coordinates
{(1,0.0005) (2,0.001) (3,0.0015)};
\end{axis}
\end{tikzpicture}
\end{document}