
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 \foreach
comando.
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!
\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 calc
paquete; 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}