使用 Tikz 进行数据可视化:如何自定义轴中值的格式?

使用 Tikz 进行数据可视化:如何自定义轴中值的格式?

这是 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}

相关内容