当所有值的数据类型不相同时,突出显示表中的极值

当所有值的数据类型不相同时,突出显示表中的极值

我有一个由 pgfplotstable 生成的表,想要突出显示特定列数每行中的最大值。

这是一个简单的、完全虚构的例子,可以说明我的问题:

                                 Car 1    Car 2    Car 3    Car 4
 Engine       Power(bhp)          300      200      350      250
              Torque (Nm)         200      250      120      400
 Dimensions   Wheel base (cm)     250      200      240      220
              Ground clearance    ...
                    ...

我想将除前两列之外的每一行中的最大值加粗。这是在表格中突出显示极值,其中有一个很好的解决方案,我正在尝试扩展它。(不幸的是,我无法向该主题添加评论,因为我刚刚加入 stackexchange)。

我从上一个线程中需要的代码是

\newcommand{\findmax}[3]{
    \pgfplotstablevertcat{\datatable}{#1}
    \pgfplotstablecreatecol[
        create col/expr={%
        \pgfplotstablerow
    }]{rownumber}\datatable
    \pgfplotstablesort[sort key={#2},sort cmp={float >}]{\sorted}{\datatable}%
    \pgfplotstablegetelem{0}{rownumber}\of{\sorted}%
    \pgfmathtruncatemacro#3{\pgfplotsretval}
    \pgfplotstableclear{\datatable}
}

\pgfplotstableset{
    highlight row max/.code 2 args={
        \pgfmathtruncatemacro\rowindex{#2-1}
        \pgfplotstabletranspose{\transposed}{#1}
        \findmax{\transposed}{\rowindex}{\maxval}
        \edef\setstyles{\noexpand\pgfplotstableset{
                every row \rowindex\space column \maxval\noexpand/.style={
                    postproc cell content/.append style={
                        /pgfplots/table/@cell content/.add={$\noexpand\bf}{$}
                    },
                }
            }
        }\setstyles
    }
}

使用以下代码读取表格\pgfplotstableread{...}\data,然后使用上述代码调用

\pgfplotstabletypeset[
    highlight row max ={\data}{1},
    highlight row max ={\data}{2},
    highlight row max ={\data}{3},
    ...
]{\data}

如果此代码在我的示例中运行,则会失败,因为前两列不是用于比较的浮点数。我理解上述代码并尝试扩展它,但我不是 tex 专家。

我设法通过限制转置命令生成的列来获得非通用的解决方案:

pgfplotstabletranspose[columns={Car 1,Car 2,Car 3,Car 4}]{\transposed}{#1}

那么 \findmax 返回的列的索引只需增加以考虑偏移量。

我想要一种更通用的方法,可以适用于任何表格。我目前的想法是将转置表中任何非浮点数单元格的内容更改为 0。我目前无法找到这样做的方法。

相关内容