半对数图通常用 10 的幂来标记主刻度,而没有尾数或分隔符,例如 10^3、10^4……,而不是 1.10^3、1.10^4 等。Pgfplots 使用默认数学字体通过标准格式提供此功能。
我需要使用无衬线字体来显示两个轴上的刻度数字,在下面的示例中我已经做到了这一点。不幸的是,我想要的十的幂的刻度也带有尾数和分隔符。
我的问题:如何消除尾数和分隔符,同时保持其他格式不变?我正在运行 LuaLaTeX。
\documentclass{article}
\usepackage[svgnames,x11names]{xcolor}
\usepackage{pgfplots}
\pgfplotsset{compat=1.15}
\pgfplotsset{%
width=0.9\textwidth,
height=0.6\textwidth,
every axis/.append style={thick},
every minor tick/.append style={very thin,black},
every major tick/.append style={thin, black},
major tick length={1.2em},
minor tick length={0.5em},
}
\begin{document}
\begin{tikzpicture}
\begin{semilogyaxis}[
log basis y=10,
minor x tick num=1,
xticklabel={$\mathsf{\pgfmathprintnumber{\tick}}$},
yticklabel={$\pgfmathparse{10.00^(\tick)}\mathsf{\pgfmathprintnumber[std=-2:2, precision=1]{\pgfmathresult}}$},
% does not solve the problem of wanting an 10^\tick with no mantissa.
]
\addplot [domain=0:10, ultra thick, color=blue] {exp(x)};
\end{semilogyaxis}
\end{tikzpicture}
\end{document}
下图是通过注释掉代码中的 yticklabel 条目得到的,显示了没有尾数的默认半对数布局。(为了清楚起见,我的问题不是调整较低的值(1、10、100)或将对数纵坐标重置为定点数,这可以通过重置来完成std=
。)
答案1
如果我理解正确的话,您关心的是\mathsf
,但不关心定点数。
在这种情况下,您可以修改数学标签的排版方式pgfplots
。为此,提供了具有默认值的pgfplots
样式log number format basis
/pgfplots/log number format basis/.code 2 args={$#1^{\pgfmathprintnumber{#2}}$},
您的用例可以按如下方式解决:
\documentclass{standalone}
\usepackage{pgfplots}
\pgfplotsset{compat=1.15}
\pgfplotsset{%
width=0.9\textwidth,
height=0.6\textwidth,
every axis/.append style={thick},
every minor tick/.append style={very thin,black},
every major tick/.append style={thin, black},
major tick length={1.2em},
minor tick length={0.5em},
}
\begin{document}
\begin{tikzpicture}
\begin{semilogyaxis}[
log basis y=10,
minor x tick num=1,
xticklabel={$\mathsf{\pgfmathprintnumber{\tick}}$},
log number format basis/.code 2 args={$\mathsf{#1^{\pgfmathprintnumber{#2}}}$},
]
\addplot [domain=0:10, ultra thick, color=blue] {exp(x)};
\end{semilogyaxis}
\end{tikzpicture}
\end{document}