Colorir linha inteira na tabela/tabular

Colorir linha inteira na tabela/tabular

Gostaria de colorir toda a linha "Trilha 1" e "Trilha 3", exceto as próprias palavras (ou seja, apenas os números, mas a coloração vai de \midrule para a próxima). Isso também removeria os pequenos espaços em branco intermediários, que não sei como remover. Como eu faria isso?

Além disso, é possível adicionar uma legenda para indicar as cores? Eu sei que o Pgfplots faz isso, mas não sei como incorporá-lo devido à diferença entre tikzpicture e tabular (corrija-me se estiver errado, sou novo nesta comunidade).

Aqui está o código executável:

\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}

Não tenho certeza do que fazer, então qualquer ajuda será muito apreciada! Além disso, não sei por que os valores dos dados não estão alinhados; portanto, se isso também pudesse ser corrigido, seria ótimo!

EDIT: Aqui estão algumas das fontes de onde vem o código:

insira a descrição da imagem aqui

Link de tabela

Link para colorir

Responder1

Por padrãoguias de livrose as cores das linhas não combinam bem. Você pode contornar isso adicionando o seguinte ao seu preâmbulo:

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

Para a lenda, eu apenas jogaria o que você deseja em um tabularambiente dentro de um minipageambiente, o que permite alcançar algo assim:

insira a descrição da imagem aqui

Você provavelmente precisará ajustar essa “lenda” de acordo com seu gosto.

Isso corrige o problema de as cores das linhas não preencherem todo o tamanho vertical das linhas, o que o OP não pergunta,mas não corrige a linha tênue entre as colunas, que é sobre o que o OP está realmente perguntando. Essa pequena lacuna é um bug. A maneira mais fácil de corrigir isso é adicionar @{}após cada especificador de coluna, o que basicamente adiciona "nada" entre as colunas, mas em vez de não fazer nada, isso remove uma pequena quantidade de espaço e, como resultado, remove a linha branca fina e tênue entre as colunas.

Com a nova correção a saída é:

insira a descrição da imagem aqui

Em particular, as linhas tênues entre as colunas desapareceram.

Finalmente, em termos de coloração de linha, talvez isso seja resultado de uma simplificação do seu código real para o MWE, mas em vez de adicionar \mycca cada uma das células que você deseja colorir, é mais eficiente definir a cor da linha e depois use \cellcolorpara alterar a cor de fundo apenas da célula da primeira. Na verdade, usando uma macro como

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

você pode fazer isso com apenas um comando por linha colorida.

Aqui está o código atualizado:

\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}

Responder2

Usando linhas horizontais, sejam elas desenhadas por \hlineou por \midrule,elinhas coloridas (ou sombreadas) de células representam uma mistura de duas metáforas visuais que podem sair pela culatra com bastante facilidade. Não faça isso. Se você descartar (ou comentar) as \midrulediretivas, a legibilidade da tabela aumentará imediatamente - e você não precisará perder tempo se preocupando em como se livrar dos incômodos espaços em branco que cercam as regras horizontais.

Um comentário separado: em vez de emitir 2*6=12 \cellcolordiretivas separadas, eu emitiria 2 \rowcolor{lightgray}diretivas para duas das linhas e 2 \cellcolor{white}diretivas para as primeiras células nessas duas linhas, para substituir o efeito das \rowcolordiretivas para essas células.

insira a descrição da imagem aqui

\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}

Responder3

Uma solução com matriz TiKz – a legenda está inscrita em uma linha em branco no final

insira a descrição da imagem aqui

\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}

EDITAR Uma solução com excelente nicematrixpacote

\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}

e o resultado

insira a descrição da imagem aqui

A legenda pode ser colocada na sexta linha

Responder4

Se você quiser linhas coloridas compatíveis com booktabs, você pode usar o ambiente {NiceTabular}de 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}

No entanto, você precisa de várias compilações.

Saída do código acima

informação relacionada