pgfplots ticklabel格式对数刻度

pgfplots ticklabel格式对数刻度

如何禁用对数刻度上的指数符号?

我想要将 ...,$10^0$,$10^1$,$10^2$,... 替换为 ...,1,10,100,...

我曾尝试使用这个默认值(pgfplots 手册第 209 页):

\pgfplotsset{ log base 10 number format code/.code={$10^{\pgfmathprintnumber{#1}}$}
}

但我无法让它工作,而且这似乎是一种用复杂的方法来完成简单的事情。


\documentclass{standalone}
\usepackage{pgfplots}
\begin{document}
\begin{tikzpicture}
  \pgfplotsset{log base 10 number format code/.code={$fun^{\pgfmathprintnumber{#1}}$}}  
  \begin{semilogxaxis}
    [xmin=1, xmax=1000, domain=1:1000]
    \addplot {ln(x)};
  \end{semilogxaxis}
\end{tikzpicture}
\end{document}

只是为了好玩

答案1

除了其他答案之外,较新版本的pgfplots带有样式log ticks with fixed point。它的作用几乎相同:它重新配置数字打印机,以便以定点格式显示刻度。它的逻辑有些复杂,以避免舍入不准确和不同的对数基数。

以下是使用此新功能的结果:

\documentclass{standalone}
\usepackage{pgfplots}
\pgfplotsset{compat=1.10}
\begin{document}
\begin{tikzpicture}
  \begin{semilogxaxis}[
    xmin=1,
    xmax=1000,
    domain=1:1000, 
    log ticks with fixed point,
    x tick label style={/pgf/number format/1000 sep=\,},
    ]
    \addplot {ln(x)};
  \end{semilogxaxis}
\end{tikzpicture}
\end{document}

在此处输入图片描述

答案2

你的意思是这样的吗:

\documentclass{standalone}
\usepackage{pgfplots}
\begin{document}
\begin{tikzpicture}
  \pgfplotsset{%
    x tick label style={/pgf/number format/1000 sep=\,},
    log base 10 number format code/.code={%
        $\pgfmathparse{10^(#1)}\pgfmathprintnumber{\pgfmathresult}$%
    }%
  }  
  \begin{semilogxaxis}
    [xmin=1, xmax=1000, domain=1:1000]
    \addplot {ln(x)};
  \end{semilogxaxis}
\end{tikzpicture}
\end{document}

在此处输入图片描述

相关内容