我正在尝试在对数轴上绘制一些数据。我的 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
这给出了期望的结果: