如何删除半对数 pgfplots 图上的尾数(同时保留对无衬线刻度字体的修改)

如何删除半对数 pgfplots 图上的尾数(同时保留对无衬线刻度字体的修改)

半对数图通常用 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}

在此处输入图片描述

相关内容