使用 pgfplots 自定义小刻度

使用 pgfplots 自定义小刻度

我正在使用pgfplots对数对数刻度绘制一些简单数据。我的代码是:

\documentclass{standalone}
\usepackage{pgfplots, amsmath}

\pgfplotsset{width=7cm,compat=newest}

\pgfkeys{/pgf/number format/set thousands separator = }

\begin{document}
    \begin{tikzpicture}
        \begin{loglogaxis}[
            xlabel =                            {A},
            ylabel =                            {B},
            ]
            \addplot[
            color =                             red,
            mark =                              x,
            ] 
            coordinates 
            {
                (20,2.8559703)
                (300,30.5301677)
                (4000,400.3050655)
                (50000,5000.1413136)
                (600000,60000.0322865)
                (7000000,600000.9675052)
                (80000000,7000000.9377747)
            };
        \end{loglogaxis}
    \end{tikzpicture}
\end{document}

代码输出

我想在输出中更改两件事:

我不希望 y 轴标签相差 10 个数量级(这是代码默认生成的标签间距),而是希望它们相差一个数量级。我发现可以通过在extra y ticks={1e1, 1e3, 1e5},的选项中包含该行来更改此设置begin{loglogaxis} [options]

但是,y 轴上对数间距的次要刻度线与 x 轴上的不同。只有主刻度线出现在10^010^1、 …处10^6

y 轴上现在缺少小刻度标记

我如何显示这些小刻度线?我尝试查看手册;我知道我的问题的答案就在那里,但我是新手,pgfplots而且自定义刻度线和标签的选项数量之多让我应接不暇!

答案1

来自pgfplots手动的,第 4.14 节“Tick 选项”,第 241 页:

/pgfplots/ytickten={<exponent base 10 list>}

这些选项允许在选定的位置放置刻度 10{<exponent base 10 list>}。它们仅用于对数图。 的语法与上面的或{<exponent base 10 list>}相同 。xtick={<list>}ytick={<list>}

使用xtickten={1,2,3,4}相当于xtick={1e1,1e2,1e3,1e4},但它需要更少的计算时间,并且允许使用简短的语法 xtickten={1,...,4}

…并且它又添加了较小的“对数刻度”标记。

代码

\documentclass[tikz]{standalone}
\usepackage{pgfplots, amsmath}

\pgfplotsset{width=7cm,compat=newest}

\pgfkeys{/pgf/number format/set thousands separator = }

\begin{document}
    \begin{tikzpicture}
        \begin{loglogaxis}[
            xlabel   = {A},
            ylabel   = {B},
            ytickten = {0,...,6},
            ]
            \addplot[
            color = red,
            mark  = x,
            ] 
            coordinates 
            {
                (20,2.8559703)
                (300,30.5301677)
                (4000,400.3050655)
                (50000,5000.1413136)
                (600000,60000.0322865)
                (7000000,600000.9675052)
                (80000000,7000000.9377747)
            };
        \end{loglogaxis}
    \end{tikzpicture}
\end{document}

输出

输出

相关内容