每列的颜色表格单元格不同

每列的颜色表格单元格不同

我有以下最小工作示例:

\documentclass{article}

\begin{document}

\begin{table}[!ht]
\centering
\begin{tabular}{|c|c|}
\hline a & b & c \\
\hline  
0.1 & 9  \\
\hline
0.5 & 4 \\
\hline
0.9 & 12 \\
\hline
\end{tabular}
\end{table}
\end{document}

现在我希望根据值的大小来为单元格着色;我找到了这方面的例子,但我希望每一列的颜色都不同;

假设对于 a 列,我有值 0.1、0.5 和 0.9 - 假设值越大越好 - 那么我希望 0.1 的单元格颜色为柔和的红色,0.5 为柔和的橙色,0.9 为柔和的绿色;

另一方面,对于 b 列,值可能越小越好,因此 12 应该是柔和的红色,而 4 应该是柔和的绿色;

我怎能这样做?


在听了 Werner 的非常有用的评论之后,我需要添加一条额外信息:每列数字的具体范围当然是手动的,例如,我知道在 a 列中,值在区间 [0,1] 内,值越大越好;在 b 列中,值在区间 [0,20] 内,值越小越好;

我的目标是根据我提供的信息 - Latex 自动为单元格分别着色

答案1

这里有一个解决方案collcell。我使用过,nicematrix因为你使用了彩色单元格和规则:使用 的工具nicematrix,你将在 PDF 查看器中获得更好的效果(在某些缩放级别下,规则在某些 PDF 查看器中似乎不会消失)。

\documentclass{article}
\usepackage{nicematrix}
\usepackage{collcell}
\begin{document}


\ExplSyntaxOn
\newcolumntype { A } { > { \collectcell \MyColumnA } c < { \endcollectcell } } 

\NewDocumentCommand \MyColumnA { m } 
  {
    \int_compare:nT { \int_use:c { c@iRow } > 1 }
      {
        \fp_set:Nn \l_tmpa_fp { #1 * 100 }
        \exp_args:Nx \cellcolor {red \exp_not:N ! \fp_use:N \l_tmpa_fp }
      }
    #1
  }

\newcolumntype { B } { > { \collectcell \MyColumnB } c < { \endcollectcell } } 

\NewDocumentCommand \MyColumnB { m } 
  {
    \int_compare:nT { \int_use:c { c@iRow } > 1 }
      {
        \fp_set:Nn \l_tmpa_fp { 100 - ( #1 * 100 ) }
        \exp_args:Nx \cellcolor {blue \exp_not:N ! \fp_use:N \l_tmpa_fp }
      }
    #1
  }
\ExplSyntaxOff



\begin{table}
\centering
\begin{NiceTabular}{ABA}[hvlines,colortbl-like]
X & Y & Z \\
0.3 & 0.35 & 0.5 \\
0.6 & 0.7 & 0.1 \\
0 & 0.3 & 0.35 \\
0.1 & 0.5 & 0.15 
\end{NiceTabular}
\end{table}

\end{document}

您需要多次编译(因为nicematrix在后台使用 PGF/Tikz 节点)。

上述代码的输出

相关内容