Me gustaría colorear la totalidad de la fila "Sendero 1" y "Sendero 3", además de esas palabras en sí (es decir, solo los números, pero el color va desde la regla \midrule hasta la siguiente). Esto también eliminaría los pequeños espacios en blanco intermedios, que no estoy seguro de cómo eliminar. ¿Cómo lo haría?
Además, ¿es posible agregar una leyenda a esto para indicar los colores? Sé que Pgfplots hace esto, pero no sé cómo incorporarlo debido a la diferencia entre tikzpicture y tabular (corrígeme si me equivoco, soy nuevo en esta comunidad).
Aquí está el código ejecutable:
\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}
No estoy seguro de qué hacer, así que cualquier ayuda será muy apreciada. Además, no estoy seguro de por qué los valores de los datos no están alineados, así que si eso también pudiera solucionarse, ¡sería genial!
EDITAR: Estas son algunas de las fuentes de donde proviene el código:
Respuesta1
Por defectopestañasy los colores de las filas no combinan bien. Puede solucionar este problema agregando lo siguiente a su preámbulo:
\addtolength{\extrarowheight}{\belowrulesep}
\aboverulesep=0pt
\belowrulesep=0pt
Para la leyenda, simplemente arrojaría lo que deseas en un tabular
entorno dentro de un minipage
entorno, lo que te permite lograr algo como esto:
Probablemente necesitarás ajustar esta "leyenda" para adaptarla a tus gustos.
Esto soluciona el problema con los colores de las filas que no llenan el tamaño vertical completo de las filas, sobre lo cual el OP no pregunta.pero no arregla la tenue línea entre las columnas, que es sobre lo que realmente pregunta el OP. Esta leve brecha es en mi opinión un error. La forma más sencilla de solucionar este problema es agregar @{}
después de cada especificador de columna, lo que esencialmente es agregar "nada" entre las columnas, pero en lugar de no hacer nada, esto en realidad elimina una pequeña cantidad de espacio y, como resultado, elimina la delgada línea blanca tenue. entre las columnas.
Con la nueva solución, el resultado es:
En particular, las líneas tenues entre las columnas han desaparecido.
Finalmente, en términos del color de las filas, tal vez esto sea el resultado de una simplificación de su código real para el MWE, pero en lugar de agregar \mycc
a cada una de las celdas que desea colorear, es más eficiente establecer el color de la fila y luego Úselo \cellcolor
para cambiar el color de fondo solo de la celda en la primera. De hecho, usando una macro como
\newcommand\colorrow{\rowcolor{lightgray}\cellcolor{white}}
Puedes hacer esto con solo un comando por fila coloreada.
Aquí está el código actualizado:
\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}
Respuesta2
Usando líneas horizontales, ya sean dibujadas por \hline
o por \midrule
,yLas filas de celdas coloreadas (o sombreadas) representan una mezcla de dos metáforas visuales que pueden resultar contraproducentes con bastante facilidad. No lo hagas. Si elimina (o comenta) las \midrule
directivas, la legibilidad de la tabla aumenta inmediatamente, y no necesita perder tiempo preocupándose por cómo deshacerse del molesto espacio en blanco que rodea las reglas horizontales.
Un comentario aparte: en lugar de emitir 2*6=12 \cellcolor
directivas separadas, emitiría 2 \rowcolor{lightgray}
directivas para dos de las filas y 2 \cellcolor{white}
directivas para las primeras celdas de estas dos filas, para anular el efecto de las \rowcolor
directivas para estas celdas.
\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}
Respuesta3
Una solución con matriz TiKz: la leyenda está inscrita en una fila en blanco al final
\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 Una solución con el excelente nicematrix
paquete.
\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}
y el resultado
La leyenda se puede colocar en la sexta fila.
Respuesta4
Si desea que las filas de colores sean compatibles con booktabs
, puede utilizar el entorno {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}
Sin embargo, necesitas varias compilaciones.