Kolorowanie całego wiersza w tabeli / tabeli

Sep 16 2020

Chciałbym pokolorować cały wiersz „Ścieżka 1” i „Ścieżka 3”, z wyjątkiem samych słów (tj. Tylko liczb, ale kolorystyka przebiega od \ środkowej reguły do ​​następnej). Spowodowałoby to również usunięcie małych białych odstępów między nimi, których nie jestem pewien, jak je usunąć. Jak bym to zrobił?

Czy można dodać do tego legendę, aby oznaczyć kolory? Wiem, że Pgfplots to robi, ale nie wiem, jak to włączyć, ze względu na różnicę między tikzpicture a tabular (popraw mnie, jeśli się mylę, jestem nowy w tej społeczności).

Oto kod, który można uruchomić:

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

Nie jestem pewien, co robić, więc każda pomoc, która będzie bardzo ceniona! Nie jestem też pewien, dlaczego wartości danych nie są wyrównane, więc jeśli można to również naprawić, byłoby świetnie!

EDYCJA: Oto kilka źródeł, z których pochodzi kod:

Tabling Link

Link do kolorowania

Odpowiedzi

4 Noname Sep 17 2020 at 04:35

Domyślnie karty książek i kolory wierszy nie współgrają ze sobą. Możesz obejść ten problem, dodając następujące elementy do swojej preambuły:

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

Dla legendy po prostu wrzuciłbym to, co chcesz, do tabularśrodowiska wewnątrz minipageśrodowiska, które pozwala ci osiągnąć coś takiego:

Prawdopodobnie będziesz musiał dostosować tę „legendę” do swoich upodobań.

Rozwiązuje to problem z kolorami wierszy, które nie wypełniają pełnego rozmiaru wierszy w pionie, o co OP nie pyta, ale nie naprawia słabej linii między kolumnami , o co w rzeczywistości pyta OP. Ta słaba luka to ihmo błąd. Najłatwiejszym sposobem rozwiązania tego problemu jest dodanie @{}po każdej kolumnie specyfikatora, co zasadniczo polega na dodaniu „niczego” między kolumnami, ale zamiast nic nie robić, to faktycznie usuwa niewielką ilość miejsca iw rezultacie usuwa cienką bladą białą linię między kolumnami.

Dzięki nowej poprawce wynik to:

W szczególności zniknęły teraz słabe linie między kolumnami.

Wreszcie, jeśli chodzi o kolorowanie wierszy, być może jest to wynikiem uproszczenia twojego prawdziwego kodu MWE, ale zamiast dodawać \myccdo każdej komórki, którą chcesz pokolorować, bardziej wydajne jest ustawienie koloru wiersza, a następnie użyj, \cellcoloraby zmienić kolor tła samej komórki w pierwszej. W rzeczywistości używając makra, takiego jak

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

możesz to zrobić za pomocą tylko jednego polecenia na kolorowy wiersz.

Oto zaktualizowany kod:

\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}
4 Mico Sep 17 2020 at 05:33

Używanie poziomych linii, niezależnie od tego, czy są narysowane przez, \hlineczy przez \midrule, oraz kolorowe (lub zacienione) rzędy komórek stanowią mieszaninę dwóch wizualnych metafor, które mogą dość łatwo obrócić się odwrotnie. Nie rób tego. Jeśli usuniesz (lub skomentujesz) \midruledyrektywy, czytelność tabeli natychmiast się zwiększy - i nie musisz tracić czasu na martwienie się, jak pozbyć się nieznośnych białych znaków otaczających reguły poziome.

Oddzielny komentarz: Zamiast wydawać 2 * 6 = 12 oddzielnych \cellcolordyrektyw, wydałbym 2 \rowcolor{lightgray}dyrektywy dla dwóch z wierszy i 2 \cellcolor{white}dyrektywy dla pierwszych komórek w tych dwóch wierszach, aby przesłonić wpływ \rowcolordyrektyw na te komórki.

\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}
2 jsbibra Sep 17 2020 at 10:09

Rozwiązanie z macierzą TiKz - legenda wpisana jest na końcu w pusty wiersz

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

EDYCJA Rozwiązanie z doskonałym nicematrixpakietem

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

i wynik

Legendę można umieścić w szóstym rzędzie

2 F.Pantigny Sep 17 2020 at 12:45

Jeśli chcesz kolorowych wierszy zgodnych z booktabs, można użyć środowiska {NiceTabular}z 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}

Potrzebujesz jednak kilku kompilacji.