pgfplots 对数轴仅带有小刻度/标签

pgfplots 对数轴仅带有小刻度/标签

我想生成一张空白的半对数纸。每个十年应该有从 1 到 9 的标签。

我只设法有一个未标记的轴,但无法成功根据我的需要设置 x 轴标签。

这是 M(NW)E:

\documentclass{standalone}
\usepackage{pgfplots}
\begin{document}
\begin{tikzpicture}
%  \pgfplotsset{log base 10 number format code/.code={$fun^{\pgfmathprintnumber{#1}}$}}
    \pgfplotsset{log base 10 number format code/.code={10}}
  \begin{semilogxaxis}[
    xmin=1, xmax=100,
    xminorticks=true,
    minor x tick num=9,
%    
    grid=both]
    \addplot {ln(x)};
  \end{semilogxaxis}
\end{tikzpicture}
\end{document}

欢迎任何帮助!

答案1

我的方法是只使用主刻度,并明确指定您需要哪些刻度。您可以...在刻度及其标签列表中使用。我承认这有点重复,但我不知道是否可以进一步缩短此语法(以合理的方式)。我想二十年来(如您的示例)这样就没问题了。

\documentclass{standalone}
\usepackage{pgfplots}
\begin{document}
\begin{tikzpicture}
  \begin{semilogxaxis}[
    xmin=1, xmax=100,
    xtick={1,2,...,10,20,30,...,100},
    xticklabels={1,2,...,9,1,2,...,9,1},
    grid=both]
    \addplot {ln(x)};
  \end{semilogxaxis}
\end{tikzpicture}
\end{document}

输出

答案2

您可以使用extra x ticksextra x tick labels。但是这些数字的空间变得越来越小。我们可以躲在下面x post scale并放大x轴。

\documentclass[border=3mm]{standalone}
\usepackage{pgfplots}
\begin{document}
\begin{tikzpicture}
  \begin{semilogxaxis}[x post scale=3,
    xmin=1, xmax=1000,
    xticklabels={1,10,100,1000},
    extra x tick style={font=\fontsize{4}{4}\selectfont},
    extra x ticks={2,...,9,20,30,...,90,200,300,...,900},
    extra x tick labels={2,...,9,20,30,...,90,200,300,...,900},
    ymin=0,ymax=9,
%
    grid=both]
  \end{semilogxaxis}
\end{tikzpicture}
\end{document}

在此处输入图片描述

先前的答案

\documentclass{standalone}
\usepackage{pgfplots}
\begin{document}
\begin{tikzpicture}
  \begin{semilogxaxis}[
    xmin=1, xmax=100000000,
    xticklabels={1,2,...,9},
    ymin=0,ymax=9,
%
    grid=both]
  \end{semilogxaxis}
\end{tikzpicture}
\end{document}

在此处输入图片描述

相关内容