tikz en la tabla con flechas de color hacia la derecha y xshift e y shift

tikz en la tabla con flechas de color hacia la derecha y xshift e y shift

Tengo el siguiente código como se puede ver debajo de las imágenes. El resultado que tengo ahora es como la primera imagen a continuación.

salida de corriente

Quiero que el resultado sea como en la imagen de abajo con flechas azules y rojas en el medio. Parece que no puedo cambiar los colores y la ubicación de las flechas.
salida requerida

El código está debajo. ¿Puede alguien ayudarme?

\begin{tabular}{|r|r|r|r|r|r|}
\hline
V   & M   & V   & M   & V   & M   \\ \hline
6   & 4  & NaN & NaN & NaN & NaN \\ \hline
7   & 3   & 5   & 5 \tikzmark{f}   & NaN & NaN \\ \hline
NaN & NaN & 8   & \tikzmark{d}{2} \tikzmark{e}  & \tikzmark{c}{4}   &     \tikzmark{b}{6}   \\ \hline
NaN & NaN & NaN & NaN & 10  & \tikzmark{a}{0}   \\ \hline
\end{tabular}
\begin{tikzpicture}[overlay, remember picture, shorten >=.5pt, shorten <=.5pt]
\draw [->] ({pic cs:a}) [line width=0.35mm, yshift=-1] to ({pic cs:b});
\draw [->] ({pic cs:c}) [line width=0.35mm, yshift=-1] to ({pic cs:d});
\draw [->] ({pic cs:e}) [line width=0.35mm, yshift=-1] to ({pic cs:f});
\end{tikzpicture}

Respuesta1

En lugar de usar, \tikzmarkusaría un matrix of math nodesinterior de tikz \matrix. A medida que dibuja sus entradas dentro de un entorno tabular, cambiar al uso de a matrix of math nodesen realidad simplifica el código.

Daré el resultado, el código y luego explicaré cómo funciona. Primero, la salida:

ingrese la descripción de la imagen aquí

A continuación el código:

\documentclass[border=5mm,tikz]{standalone}
\usepackage{tikz}
\usetikzlibrary{matrix}

\begin{document}

  \begin{tikzpicture}[>=stealth,->,shorten >=2pt,looseness=.5,auto]
    \matrix (M)[matrix of math nodes,row sep=0mm,column sep=0mm,
                nodes=draw, minimum size=12mm]{
        V   & M   & V   & M   & V   & M   \\
        6   & 4   & NaN & NaN & NaN & NaN \\
        7   & 3   & 5   & 5   & NaN & NaN \\
        NaN & NaN & 8   & 2   &  4  &  6  \\
        NaN & NaN & NaN & NaN & 10  &  0  \\
     };
    \draw[ultra thick,blue,->] (M-5-6.west) -- (M-4-6.west);
    \draw[ultra thick,red,->]  (M-5-5.north) -- (M-5-4.north);
    \draw[ultra thick,blue,->] (M-4-4.west) -- (M-3-4.west);
    \draw[ultra thick,red,->]  (M-4-3.north) -- (M-4-2.north);
    \draw[ultra thick,blue,->] (M-3-2.west) -- (M-2-2.west);
  \end{tikzpicture}

\end{document}

Ahora la explicación:

El \matrix (M)comando configura una matriz con coordenadas especificadas por (M-<row>-<col>), donde <row>y <col>son los índices de filas y columnas. Si en lugar de eso escribieras \matrix (mat)entonces te referirías a las coordenadas como (mat-<row>-<col>).

A continuación, puede utilizar north, south, west, north westetc. para ajustar a qué parte de la celda de la matriz se refiere la especificación del nodo. Por ejemplo, (M-4-3.west)se refiere al borde occidental del nodo en la fila 4 y la columna 3. ¡Casi todo debería quedar claro ahora, espero!

En el que matrix of math nodeshe puesto row sep=0mm,column sep=0mm, nodes=draw, minimum size=12mm. Esto es para dibujar su cuadrícula: no hay espacios entre las filas y las columnas, cada nodo debe tener un rectángulo dibujado alrededor y el tamaño mínimo de celda 12mse eligió para que se ajuste al contenido de las celdas del OP. Personalmente, no dibujaría la cuadrícula (la documentación delpestañasEl paquete explica por qué se deben evitar las líneas verticales en las tablas), pero era lo que pedía la pregunta...

Si desea que el diseño sea el mismo que en su MWE, con celdas rectangulares en lugar de celdas cuadradas en mi código, cambie minimum size=12mma minimum width=12mm. Para mostrar cómo se ve esto y resaltar aún más las especificaciones del nodo, si cambia las declaraciones de dibujo a

    \draw[ultra thick,blue,->] (M-5-6.south west) -- (M-4-6.south west);
    \draw[ultra thick,red,->]  (M-5-5.north east) -- (M-5-4.north west);
    \draw[ultra thick,blue,->] (M-4-4.south west) -- (M-3-4.south west);
    \draw[ultra thick,red,->]  (M-4-3.north east) -- (M-4-2.north west);
    \draw[ultra thick,blue,->] (M-3-2.south west) -- (M-2-2.south west);

entonces contigo minimum size=12mmobtienes

ingrese la descripción de la imagen aquí

EDITAR(respondiendo preguntas en los comentarios)

Para sombrear las columnas basta con agregar lo siguiente every odd columny every even columnestilos a las opciones de la matriz:

every odd column/.style={nodes={fill=pink}},
every even column/.style={nodes={fill=blue!20!white}},

Con esto en su lugar, su imagen se convierte en:

ingrese la descripción de la imagen aquí

Creo que las líneas "dobles" que está viendo son errores de representación y probablemente dependen del navegador y tal vez no aparezcan al imprimir (no lo sé, no lo he comprobado). Para la imagen de arriba los eliminé de una manera muyad hocmanera cambiando las separaciones de filas y columnas a:

row sep=-0.1mm,column sep=-0.1mm

información relacionada