pgfplots-如何指定刻度?

pgfplots-如何指定刻度?

我知道如何手动指定刻度。但是如果您有多个图,那么这项工作就太繁重了。我正在寻找一种自动执行此操作的方法。我想指定的是轴的刻度数。有没有办法只说明您想要多少个刻度?我读过“尝试最小刻度=3”并尝试过“尝试最大刻度=3”,但那太简单了……

编辑:图

这是我喜欢的 y 轴上有 5 个刻度的图形。

在此处输入图片描述

答案1

刻度放置算法的工作原理是确定轴的范围,将其除以距离max space between ticks以获得所需的刻度数,然后选择步长 1、0.5、0.2 或 0.1 乘以上限的数量级(因此,如果最大值是 0.4,则为 0.1、0.05、0.02 或 0.01;如果最大值是 400,则为 100、50、20 或 10)。

因此实际上,max space between ticks用于指定要使用的刻度数,但并非所有步长都允许。目前,无法为不同的轴单独指定此值(功能请求?)。

如果您想要获得 0.25 的步长以便在示例中获得 5 个刻度,则必须调整内部宏(或打开功能请求)。将以下块放入您的序言中将允许步长为 0.25(或 2.5、25 等)

\makeatletter
\def\pgfplots@assign@default@tick@foraxis@normalizetickdist#1#2{%
    \begingroup
    \let\H=\pgf@xb
    \expandafter\pgfmathfloat@decompose#2\relax\pgfmathfloat@a@S\H\pgfmathfloat@a@E
    % modify the mantisse:
    \ifdim\H<2pt
        \ifdim\H<1.5pt
            \H=1.0pt
        \else
            \H=2.0pt
        \fi
    \else
        \ifdim\H<4.9999pt
            \ifdim\H<2.25pt
                \H=2.0pt\relax
            \else
                \ifdim\H<3.75pt
                    \H=2.5pt\relax
                \else
                    \H=5.0pt\relax
                \fi
            \fi
        \else
            \ifdim\H<7.5pt
                \H=5.0pt\relax
            \else
                \H=1.0pt\relax
                \advance\pgfmathfloat@a@E by1
            \fi
        \fi
    \fi
    \pgfmathfloatcreate{\the\pgfmathfloat@a@S}{\pgf@sys@tonumber{\H}}{\the\pgfmathfloat@a@E}%
    \pgfmath@smuggleone\pgfmathresult
    \endgroup
}%

相关内容