提高对数轴上整数刻度标签的精度

提高对数轴上整数刻度标签的精度

我正在尝试在对数轴上绘制一些数据。我的 x 轴标有来自输入数据 ( xtick=data) 的整数。我不想使用科学计数法,所以我添加了该log ticks with fixed point选项。但是,刻度标签是四舍五入的,精度只有 3 位。

示例截图

我尝试用两种方法解决这个问题。第一种方法:更改x tick label style格式选项。请参见下面的示例。

\begin{tikzpicture}
    \begin{loglogaxis}[
        log ticks with fixed point,
        x tick label style={/pgf/number format/fixed relative,/pgf/number format/precision=5},
        xtick=data,
        ]
            \addplot table[x=input,y=output] {
                input   output
                1   0.9
                16  4
                256 9
                4096    15
                65536   20
            };
    \end{loglogaxis}
\end{tikzpicture}

我第二次尝试是根据以下因素重新计算标签这个答案这个答案。这会导致浮点计算中出现一些错误,因为下面的示例导致标签为“33442”而不是“33444”。

\begin{tikzpicture}
    \begin{loglogaxis}[
        log ticks with fixed point,
        log basis x=2,
        xticklabel={
            \pgfkeys{/pgf/fpu=true}
            \pgfmathparse{2^\tick}
            \pgfmathprintnumber[fixed]{\pgfmathresult}
        },
        xtick=data,
        ]
            \addplot table[x=input,y=output] {
                input   output
                1   0.9
                16  4
                256 9
                4096    15
                33444   20
            };
    \end{loglogaxis}
\end{tikzpicture}

我该如何解决这个问题并准确显示数据中的数字?

答案1

在这种情况下,一个简单的解决方案是使用属性xticklabels from table,因为输入数据是表格格式:

\begin{tikzpicture}
    \begin{loglogaxis}[
        log ticks with fixed point,
        xtick=data,
        xticklabels from table={data.dat}{input},
        ]
            \addplot table[x=input,y=output] {data.dat};
    \end{loglogaxis}
\end{tikzpicture}

其中data.dat包含:

input   output
1   0.9
16  4
256 9
4096    15
33444   20

这给出了期望的结果:

在此处输入图片描述

相关内容