如何以科学计数法为 pgfplotstable 中的列设置相同的 10 的指数?

如何以科学计数法为 pgfplotstable 中的列设置相同的 10 的指数?

我需要第一列中的所有数字都具有相同的十的指数,例如10^{-2}。如果乘数不是放在数字附近,而是放在表格的标题中,那就太好了。

\documentclass[]{article}
\usepackage{siunitx}
\usepackage{booktabs}
\usepackage{pgfplots, pgfplotstable}

\pgfplotstableread[]{
    X       Y    Xerror Yerror  Y2
    0       0    0       0     0
    0.022   0.4  0.005   0.1   0.66
    0.038   0.8  0.005   0.1   1.14
    0.058   1.2  0.005   0.1   1.74
    0.09    1.6  0.005   0.1   2.7
    0.101   2    0.005   0.1   3.03
    0.123   2.4  0.005   0.1   3.69
    0.130   2.8  0.005   0.1   3.9
}\datatable

\begin{document}

    \pgfplotstableset{
    columns={X,Y,Xerror,Yerror},
    columns/X/.style={
        column name={$x$, \si{\meter}},
        /pgf/number format/.cd, sci, sci zerofill, relative*={-3}
    },
    columns/Y/.style={
        column name={$F_\mathbf{elast}$, \si{\newton}},
        /pgf/number format/.cd, fixed, fixed zerofill,
    },
    columns/Xerror/.style={
        column name={$\Delta x$, \si{\meter}},
        /pgf/number format/.cd, relative*={-2}
    },
    columns/Yerror/.style={
        column name={$\Delta F_\mathbf{elast}$, \si{\newton}},
    },
    every head row/.style={
        before row={\toprule},
        after row={\midrule}
    },
    every last row/.style={after row=\bottomrule},
}
\pgfplotstabletypeset{\datatable}

\end{document}

期望结果应该如下图所示

在此处输入图片描述

答案1

除了使用relative*,您还可以使用multiply by来缩放值。然后,您只需将 更改column name为包含 10 的幂即可。

另外,不需要使用/pgf/number format/.cdpgfplotstable明白,您想要设置数字格式。

代码:

\documentclass[]{article}
\usepackage{siunitx}
\usepackage{booktabs}
\usepackage{pgfplots, pgfplotstable}

\pgfplotstableread[]{
    X       Y    Xerror Yerror  Y2
    0       0    0       0     0
    0.022   0.4  0.005   0.1   0.66
    0.038   0.8  0.005   0.1   1.14
    0.058   1.2  0.005   0.1   1.74
    0.09    1.6  0.005   0.1   2.7
    0.101   2    0.005   0.1   3.03
    0.123   2.4  0.005   0.1   3.69
    0.130   2.8  0.005   0.1   3.9
}\datatable

\begin{document}

    \pgfplotstableset{
    columns={X,Y,Xerror,Yerror},
    columns/X/.style={
        column name={$x$, \SI{e-2}{\meter}},
        multiply by=100,
        fixed, fixed zerofill,
    },
    columns/Y/.style={
        column name={$F_\mathbf{elast}$, \si{\newton}},
        fixed, fixed zerofill,
    },
    columns/Xerror/.style={
        column name={$\Delta x$, \SI{e-3}{\meter}},
        multiply by=1000
    },
    columns/Yerror/.style={
        column name={$\Delta F_\mathbf{elast}$, \si{\newton}},
    },
    every head row/.style={
        before row={\toprule},
        after row={\midrule}
    },
    every last row/.style={after row=\bottomrule},
}
\pgfplotstabletypeset{\datatable}

\end{document}

结果:

在此处输入图片描述

相关内容