PGFplotstable:是否可以为“行”而不是“列”设置数字格式?

PGFplotstable:是否可以为“行”而不是“列”设置数字格式?

使用 pgfplotstable,可以直接使用以下方法设置列号格式

columns/(columnname)/.style={(format)}

我想做的是更改特定行的数字格式。在我的例子中,表格的最后一行是百分比格式,而表格的其余部分是定点格式。

有没有办法设置一行的数字格式,以覆盖所有列的数字格式?

作为后续问题,百分比是否有预设的数字格式?

干杯

编辑: 感谢 Christian,现在我离成功更近了一步。但是,我现在遇到了一个问题,即dec sep align创建的每个列中都出现了两个“%”符号。我该如何删除第一个符号?查看图片的最后一行,了解我的意思。

在此处输入图片描述

答案1

Pgfplotstable 具有类似的样式every row no <index>,并且还有一些其他样式。

然而,这些样式在处理过程中应用得相当晚:内容在那个阶段已经固定了。

我接受此作为功能请求。

不过,有一个简单的方法可以启用这种样式:名为 的样式every row <rowindex> column <colindex>。这些样式允许内容生成的变化,特别是它们尊重数字格式的变化。

您可以将此类样式的序列分组,以便使用以下方式轻松更改特定列的所有值

\documentclass{article}

\usepackage{pgfplotstable}

\begin{document}

\pgfplotstableset{
    % #1 = row index
    % #2 = row style keys
    row style/.style 2 args={
        every row #1 column 0/.style={#2},
        every row #1 column 1/.style={#2},
        every row #1 column 2/.style={#2},
        every row #1 column 3/.style={#2},
        every row #1 column 4/.style={#2},
        every row #1 column 5/.style={#2},
        every row #1 column 6/.style={#2},
        every row #1 column 7/.style={#2},
        every row #1 column 8/.style={#2},
        every row #1 column 9/.style={#2},
        every row #1 column 10/.style={#2},
    }
}

\pgfplotstabletypeset[
    row style={3}{sci},
]{
    a b
    0 0
    1 1
    2 2
    3 3
    4 4
    5 5
    6 6
    7 7
    8 8
    9 9
    10 10
}

\end{document}

编辑:关于您的第二个问题:您想要格式化百分比(即乘以 100 并附加'%'):

在此处输入图片描述

\documentclass{standalone}

\usepackage{pgfplotstable}

\begin{document}

\pgfplotstabletypeset[
    columns/A/.style={
        column type=r,
        preproc/expr={100*##1},
        postproc cell content/.append style={
            /pgfplots/table/@cell content/.add={}{\%},
        },
        fixed,
        fixed zerofill,
    },
]
{
 A
 0.01
 1
 0.1234
 0.5
}

\end{document}

答案2

对于那些想知道我将百分比格式应用于行而不是列的解决方案的人,只需输入 Christian 的答案中的代码即可Pgfplotstable:我如何添加百分号(并尊重十进制九进制对齐)?作为第二个参数{#2}

\pgfplotstableset{
    % #1 = row index
    % #2 = row style keys
    row style/.style 2 args={
        every row #1 column 0/.style={#2},
        every row #1 column 1/.style={#2},
        every row #1 column 2/.style={#2},
        every row #1 column 3/.style={#2},
        every row #1 column 4/.style={#2},
        every row #1 column 5/.style={#2},
        every row #1 column 6/.style={#2},
        every row #1 column 7/.style={#2},
        every row #1 column 8/.style={#2},
        every row #1 column 9/.style={#2},
        every row #1 column 10/.style={#2},
    }
}

\pgfplotstableread[col sep=comma]{data.csv}\datatable
\pgfplotstabletypeset[
    row style={(the row number with percentage data)}{precision=2,postproc cell content/.append code={
                \ifnum1=\pgfplotstablepartno
                    \pgfkeysalso{@cell content/.add={}{\%}}%
                \fi
    }}
    ]{\datatable}

相关内容