我想生成一张空白的半对数纸。每个十年应该有从 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 ticks
和extra 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}