如何使用 pgfplots 获取线图轴上的固定数字?

如何使用 pgfplots 获取线图轴上的固定数字?

我之前在 Stack Overflow 上看到过这个问题,但不知为何答案对我不起作用。你能帮我制作一个使用非科学记数法数字的折线图吗?

这是我的代码:

\pgfplotsset{timeAcc/.style={
    xmin=1, 
    xmax=100, 
    ymin=0, 
    ymax=100,
    scaled ticks=false,
    y tick label style={/pgf/number format/fixed},
    ytick={0,10,20,30,40,50,60,70,80,90,100},
    xlabel={Window Size (ms)},
    ylabel={Accuracy (\%)},
    grid=major,
}}

\begin{tikzpicture}
    \begin{loglogaxis} [
        timeAcc,
        title=Example Model,
        legend entries={Total accuracy, GMR, Usage},
    ]
    \addplot table [col sep=comma] {data.csv};
    \addplot table [y=c, col sep=comma] {data.csv};
    \addplot table [y=d, col sep=comma] {data.csv};
    \end{loglogaxis}
\end{tikzpicture}

所以我使用scaled ticks=falseformat/fixed,但我的输出如下所示:

我的图表图片

为什么 pgfplots 忽略了 tick 命令,我该如何改变这种情况?

答案1

tick label style={/pgf/number format/fixed}使用 时不起作用loglogaxis。您必须使用log ticks with fixed point(归功于 percusse)。

此外,如果您只希望一个轴采用对数格式,则可以将图表设置为semilogaxis,这样其中一个轴采用对数刻度,另一个轴采用线性刻度。在这种情况下,这将是semilogxaxis,并且看起来像这样:

\pgfplotsset{timeAcc/.style={
    xmin=1, 
    xmax=100, 
    ymin=0, 
    ymax=100,
    scaled ticks=false,
    y tick label style={/pgf/number format/fixed},
    log ticks with fixed point,
    ytick={0,10,20,30,40,50,60,70,80,90,100},
    xlabel={Window Size (ms)},
    ylabel={Accuracy (\%)},
    grid=major,
}}

\begin{tikzpicture}
    \begin{semilogxaxis} [
        timeAcc,
        title=Example Model,
        legend entries={Total accuracy, GMR, Usage},
    ]
    \addplot table [col sep=comma] {data.csv};
    \addplot table [y=c, col sep=comma] {data.csv};
    \addplot table [y=d, col sep=comma] {data.csv};
    \end{semilogxaxis}
\end{tikzpicture}

相关内容