这是 pgf-tikz 手册的屏幕截图(手册版本 3.1.8b 的第 82.2.5 节,第 878 页):
\documentclass[tikz]{standalone}
\usetikzlibrary {datavisualization.formats.functions}
\begin{document}
\tikz \datavisualization [scientific axes,
x axis={logarithmic}, y axis={logarithmic}, visualize as line]
data [format=function] {
var x : interval [0.01:100]; func y = \value x * \value x;
};
\end{document}
如何自定义显示的值以获得更协调的结果?例如,在 y 轴上,我们看到:
- 科学计数法(例如:1·10^{-2});
- 十进制值(例如:0.1);
- 整数值(例如:100)。
这在科学绘图中似乎是不可接受的。
有办法改变这种情况吗?
我知道82.4.11 样式刻度和网格线:样式和排版值,但这是针对 y 轴(或 x 轴)中每个值的手动解决方案。
如果有办法以科学计数法显示所有数值的话,我希望可以去掉10的幂之前不必要的“1·”。
答案1
您所指向的手册部分实际上在最后给出了一般答案:tick typesetter
。
手册中的示例定义了一个用于数字格式的宏,但您可以\pgfmathprintnumber
直接使用,如下例所示。请参阅第 97 章数字打印在手册中查找与使用格式化数字相关的所有选项\pgfmathprintnumber
。
\documentclass[tikz]{standalone}
\usetikzlibrary {datavisualization.formats.functions}
\begin{document}
\tikz \datavisualization [
scientific axes,
x axis={logarithmic},
y axis={logarithmic,
ticks={
tick typesetter/.code={%
\pgfmathprintnumber[sci, retain unit mantissa=false]{##1}
}
}
},
visualize as line
]
data [format=function] {
var x : interval [0.01:100]; func y = \value x * \value x;
};
\end{document}