Generieren von TikZ-Knoten und -Beschriftungen aus benutzerdefinierten Array-Zeichenfolgen

Generieren von TikZ-Knoten und -Beschriftungen aus benutzerdefinierten Array-Zeichenfolgen

Ich versuche, mithilfe der TikZ-Umgebung eine Grafik mit Beschriftungen an mehreren bestimmten Stellen zu versehen. Anstatt den Knotenbefehl viele Male zu wiederholen und die Knotenposition und Beschriftung zu ändern, möchte ich, dass TikZ zusammen mit dem \foreachBefehl Koordinaten und Beschriftungen aus benutzerdefinierten Zeichenfolgen verwendet, die ich eingebe.

Außerdem sollten diese Koordinaten als dimensionslose Dezimalwerte (0-1) der gesamten Grafikbreite und -höhe angegeben werden, damit die Knoten auch dann an den entsprechenden Stellen sind, wenn sich die Gesamtbreite/-höhe ändert. Ich erhalte die Höhe der skalierten Figur aus der angegebenen Breite dank Will Robertsons Antwort auf eine FrageHier.

Ich habe hier ein nicht funktionierendes MWE, das dieses erste Bild nehmen und Beschriftungen wie im zweiten hinzufügen sollte. Vielleicht kann mir jemand sagen, was ich falsch mache? Vielen Dank im Voraus!

Bildbeschreibung hier eingeben

Bildbeschreibung hier eingeben

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

Antwort1

Sie waren fast am Ziel. Sie haben die Multiplikationszeichen vergessen, vergessen, den Knoteninhalt zu analysieren und brauchen das calcPaket nicht. Die gleichnamige Bibliothek ermöglicht Ihnen dasselbe.

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

Bildbeschreibung hier eingeben

verwandte Informationen