为表格中的整行着色

为表格中的整行着色

我想为“Trail 1”和“Trail 3”这两行的所有行都涂上颜色,除了这些单词本身(即只涂数字,但颜色从 \midrule 到下一个)。这还会删除中间的微小空白,但我不知道如何删除。我该怎么做?

另外,是否可以添加图例来表示颜色?我知道 Pgfplots 可以做到这一点,但由于 tikzpicture 和 tabular 之间的差异,我不知道如何将其合并(如果我错了,请纠正我,我是这个社区的新手)。

以下是可运行的代码:

\documentclass[11pt]{scrartcl}
\usepackage[utf8]{inputenc}
\usepackage[sexy]{evan}
\usepackage{booktabs}
\usepackage{siunitx}
\usepackage[table]{xcolor}
\newcommand{\mycc}{\cellcolor{lightgray}}

\begin{document}

\begin{center}
\begin{tabular}{SSSSSSS} \toprule
    {$m$} & {$2$m} & {$4$m} & {$6$m} & {$8$m} & {$10$m} & {$12$m} \\ \midrule
    \text{Trail 1}  & \mycc 1.48  & \mycc 2.76 & \mycc 4.02  & \mycc 5.22 & \mycc 6.43 & \mycc 7.76 \\ \midrule
    \text{Trail 2}  & 1.53 & 3.21 & 4.76 & 6.32 & 7.81 & 9.47 \\ \midrule
    \text{Trail 3}  & \mycc 1.53  & \mycc 2.94 & \mycc 4.53  & \mycc 5.96 & \mycc 7.36 & \mycc 8.83 \\ \midrule
    \text{Trail 4}  & 1.80  & 3.46 & 4.94  & 6.49 & 8.20  & 9.85 \\ \bottomrule 
\end{tabular}    
\end{center}

\end{document}

我不知道该怎么办,所以非常感谢大家的帮助!另外,我不确定为什么数据值不一致,所以如果这个问题也能解决,那就太好了!

编辑:以下是代码的一些来源:

在此处输入图片描述

搁置链接

彩色链接

答案1

默认情况下书签和行颜色不能很好地协同工作。您可以通过在序言中添加以下内容来解决此问题:

\addtolength{\extrarowheight}{\belowrulesep}
\aboverulesep=0pt
\belowrulesep=0pt

对于图例,我只需将您想要的东西扔进tabular环境内的环境中minipage,这样您就可以实现这样的目标:

在此处输入图片描述

您可能需要调整这个“图例”来适合您的口味。

这解决了行颜色没有填满行的整个垂直尺寸的问题,这是 OP 没有询问的,但它无法修复柱子之间的模糊线条,这正是 OP 真正想要问的。在我看来,这个模糊的间隙是一个错误。解决这个问题最简单的方法是@{}在每列说明符后添加,这实际上是在列之间添加“无”内容,但这实际上会删除少量空间,因此,它会删除列之间的细而模糊的白线。

使用新的修复后,输出为:

在此处输入图片描述

特别是,柱子之间的模糊线条现在已经消失了。

最后,就行着色而言,这可能是 MWE 实际代码简化的结果,但与其\mycc向每个要着色的单元格添加颜色,不如先设置行颜色,然后使用它来更改第一个单元格的背景颜色,这样效率更高\cellcolor。事实上,使用类似

\newcommand\colorrow{\rowcolor{lightgray}\cellcolor{white}}

您只需对每个彩色行执行一个命令即可完成此操作。

以下是更新后的代码:

\documentclass[11pt]{scrartcl}
\usepackage[utf8]{inputenc}
%\usepackage[sexy]{evan}
\usepackage{booktabs}
\usepackage{siunitx}
\usepackage[table]{xcolor}
\newcommand{\mycc}{\cellcolor{lightgray}}
\newcommand\colorrow{\rowcolor{lightgray}\cellcolor{white}}

\addtolength{\extrarowheight}{\belowrulesep}
\aboverulesep=0pt
\belowrulesep=0pt

\begin{document}

\begin{center}
  \begin{tabular}{*6{S@{}}S} \toprule
    {$m$} & {$2$m} & {$4$m} & {$6$m} & {$8$m} & {$10$m} & {$12$m} \\ \midrule
    \colorrow
    \text{Trail 1}  &  1.48  &  2.76 &  4.02  &  5.22 &  6.43 &  7.76 \\ \midrule
    \text{Trail 2}  & 1.53 & 3.21 & 4.76 & 6.32 & 7.81 & 9.47 \\ \midrule
    \colorrow
    \text{Trail 3}  &  1.53  &  2.94 &  4.53  &  5.96 &  7.36 &  8.83 \\ \midrule
    \text{Trail 4}  & 1.80  & 3.46 & 4.94  & 6.49 & 8.20  & 9.85 \\ \bottomrule
\end{tabular}

\smallskip

\hfil
\begin{minipage}{0.3\textwidth}
  \textbf{Legend}\\
  \begin{tabular}{ll}
     \mycc This colour & stuff
  \end{tabular}
\end{minipage}
\end{center}

\end{document}

答案2

使用水平线,无论是用\hline还是用绘制\midrule彩色(或阴影)单元格行代表两种视觉隐喻的混合,很容易适得其反。不要这样做。如果您删除(或注释掉)指令\midrule,表格的可读性会立即提高——您不必花时间担心如何摆脱水平规则周围令人讨厌的空白。

单独的评论:\cellcolor我不会发布 2*6=12 个单独的指令,\rowcolor{lightgray}而是对其中两行发布 2 个指令,对这两行的第一个单元格发布 2 个指令,以覆盖这些单元格的指令\cellcolor{white}效果。\rowcolor

在此处输入图片描述

\documentclass[11pt]{scrartcl}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
%\usepackage[sexy]{evan} 
\usepackage{booktabs,siunitx}
\usepackage[table]{xcolor}

\begin{document}
\begin{center}
\renewcommand\arraystretch{1.25} % for a more open "look"
\begin{tabular}{@{} l *{6}{S[table-format=1.2]} } 
\toprule
    & {2m} & {4m} & {6m} & {8m} & {10m} & {12m} \\ %\midrule
    \rowcolor{lightgray}%
    \cellcolor{white}%
    Trail 1  & 1.48 & 2.76 & 4.02 & 5.22 & 6.43 & 7.76 \\ %\midrule
    Trail 2  & 1.53 & 3.21 & 4.76 & 6.32 & 7.81 & 9.47 \\ %\midrule
    \rowcolor{lightgray}%
    \cellcolor{white}%
    Trail 3  & 1.53 & 2.94 & 4.53 & 5.96 & 7.36 & 8.83 \\ %\midrule
    Trail 4  & 1.80 & 3.46 & 4.94 & 6.49 & 8.20 & 9.85 \\ 
\bottomrule 
\end{tabular}    
\end{center}
\end{document}

答案3

使用 TiKz 矩阵的解决方案 - 图例刻在最后的空白行中

在此处输入图片描述

\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{matrix}
\begin{document}

\tikzset{ 
    table/.style={
        matrix of nodes,
        nodes={
            rectangle,
            draw=none,
            align=center
        },
        minimum height=1.5em,
        every even row/.style={
            nodes={fill=black!30}
        },
        column 1/.style={
            nodes={text width=4em,font=\bfseries}
        },
    }
}

\begin{tikzpicture}
\matrix (first) [table,text width=4em]
{
    {$m$} & {$2$m} & {$4$m} & {$6$m} & {$8$m} & {$10$m} & {$12$m} \\
|[fill=white]|{Trail 1}  & 1.48  &  2.76 & 4.02  &  5.22 &  6.43 &  7.76 \\ 
{Trail 2}  & 1.53 & 3.21 & 4.76 & 6.32 & 7.81 & 9.47 \\
|[fill=white]|{Trail 3}  &  1.53  & 2.94 &  4.53  &  5.96 &  7.36 & 8.83 \\
{Trail 4}  & 1.80  & 3.46 & 4.94  & 6.49 & 8.20  & 9.85 \\
&|[fill=white]|{}&&&&&\\
&&|[fill=black!30]|Legend&{defintion}&&&\\
};
\end{tikzpicture}
\end{document}

编辑一个具有优秀nicematrix软件包的解决方案

\documentclass{article}
\usepackage{nicematrix}

\begin{document}
\begin{NiceTabular}{rrrrrrr}[code-before = \rowcolors{1}{white}{blue!15} \columncolor{white}{1}] 
    {$m$} & {$2$m} & {$4$m} & {$6$m} & {$8$m} & {$10$m} & {$12$m} \\
    \text{Trail 1}  & 1.48  &  2.76 & 4.02  &  5.22 &  6.43 &  7.76 \\
    \text{Trail 2}  & 1.53 & 3.21 & 4.76 & 6.32 & 7.81 & 9.47 \\ 
    \text{Trail 3}  &  1.53  & 2.94 &  4.53  &  5.96 &  7.36 & 8.83 \\ 
    \text{Trail 4}  & 1.80  & 3.46 & 4.94  & 6.49 & 8.20  & 9.85 \\ 
\end{NiceTabular}   
\end{document}

结果

在此处输入图片描述

图例可以放在第六行

答案4

如果您想要兼容的彩色行,您可以使用的booktabs环境。{NiceTabular}nicematrix

\documentclass[11pt]{scrartcl}
\usepackage{booktabs}
\usepackage{siunitx}
\usepackage{xcolor}
\usepackage{nicematrix}

\begin{document}

\begin{center}
\begin{NiceTabular}{SSSSSSS}[colortbl-like] \toprule
    {$m$} & {$2$m} & {$4$m} & {$6$m} & {$8$m} & {$10$m} & {$12$m} \\ \midrule
    \text{Trail 1}  & \rowcolor{lightgray}1.48  & 2.76 & 4.02 & 5.22 & 6.43 & 7.76 \\ \midrule
    \text{Trail 2}  &                     1.53  & 3.21 & 4.76 & 6.32 & 7.81 & 9.47 \\ \midrule
    \text{Trail 3}  & \rowcolor{lightgray}1.53  & 2.94 & 4.53 & 5.96 & 7.36 & 8.83 \\ \midrule
    \text{Trail 4}  &                           & 3.46 & 4.94 & 6.49 & 8.20 & 9.85 \\ \bottomrule 
\end{NiceTabular}    
\end{center}

\end{document}

然而,您需要多次编译。

上述代码的输出

相关内容