Generación de nodos y etiquetas TikZ a partir de cadenas de matriz personalizadas

Generación de nodos y etiquetas TikZ a partir de cadenas de matriz personalizadas

Estoy intentando utilizar el entorno TikZ para anotar un gráfico con etiquetas en varias ubicaciones específicas. En lugar de repetir el comando del nodo muchas veces y cambiar la ubicación y la etiqueta del nodo, realmente me gustaría que TikZ usara coordenadas y etiquetas de cadenas personalizadas que ingreso, junto con el \foreachcomando.

Además, estas coordenadas deben darse como escalares decimales adimensionales (0-1) del ancho y alto total del gráfico, de modo que los nodos estén en las ubicaciones respectivas incluso si el ancho/alto total cambia. Obtengo la altura de la figura escalada a partir del ancho especificado gracias a la respuesta de Will Robertson a una preguntaaquí.

Tengo un MWE que no funciona aquí y debería tomar esta primera imagen y agregar etiquetas como en la segunda. ¿Quizás alguien podría decirme qué estoy haciendo mal? ¡Gracias de antemano!

ingrese la descripción de la imagen aquí

ingrese la descripción de la imagen aquí

\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage{tikz}
\usepackage{pgfmath,pgffor}
\usepackage{calc}

\def\site{{1,2,3,4,5}} %Load labels
\def\xdim{{0.038,0.149,0.488,0.668,0.872
}} %Load dimensionless x-coordinates for labels
\def\ydim{{0.57,0.908,0.713,0.632,0.688
}} %Load dimensionless y-coordinates for labels

\begin{document}
    \newlength\gw
    \setlength\gw{10cm} %Load graphic width
    \def\mygraphic{\includegraphics[width=\gw]{label_this.jpg}}
    \newlength\gh
    \setlength\gh{\heightof{\mygraphic}} %Graphic height
    \begin{figure}
        \centering
        \begin{tikzpicture}
            \node at (0,0) {\includegraphics[width=\gw]{label_this.jpg}};
            \foreach \i in {0,...,4}
            {
            \node at (\xdim[\i]\gw,\ydim[\i]\gh) {\site[\i]};
            }
        \end{tikzpicture}
        \caption{Labelled Graphic}
    \end{figure}
\end{document}

Respuesta1

Ya casi estabas allí. Olvidó los signos de multiplicación, olvidó analizar el contenido del nodo y no necesita el calcpaquete; la biblioteca del mismo nombre le permite hacer lo mismo.

\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage{tikz}
\usetikzlibrary{calc}

\def\site{{1,2,3,4,5}} %Load labels
\def\xdim{{0.038,0.149,0.488,0.668,0.872
}} %Load dimensionless x-coordinates for labels
\def\ydim{{0.57,0.908,0.713,0.632,0.688
}} %Load dimensionless y-coordinates for labels

\begin{document}
    \newlength\gw
    \setlength\gw{10cm} %Load graphic width
    \def\mygraphic{\includegraphics[width=\gw]{label_this.jpg}}
%     \newlength\gh
%     \setlength\gh{\heightof{\mygraphic}} %Graphic height
    \begin{figure}
        \centering
        \begin{tikzpicture}
            \node[inner sep=0pt] (grph) at (0,0) {\includegraphics[width=\gw]{label_this.jpg}};
            \path let \p1=($(grph.north)-(grph.south)$) in
            \pgfextra{\xdef\gh{\y1}};
            \foreach \i in {0,...,4}
            {
            \node at (\xdim[\i]*\gw-4.5cm,\ydim[\i]*\gh-2.5cm) {\pgfmathparse{\site[\i]}%
            \pgfmathresult};
            }
        \end{tikzpicture}
        \caption{Labelled Graphic}
    \end{figure}
\end{document}

ingrese la descripción de la imagen aquí

información relacionada