Posizione label con il comando \node – TikZ

  • Creatore
    Topic
  • #79546
    Up
    0
    Down
    ::


    Ciao a tutti,

    torno ancora con una domanda riguardo a [tt]TikZ.[/tt] Ho cercato sulla documentazione ma non sono riuscito a ottenere il risultato che vorrei. Quando scrivo
    `\node (punto) [align=left] at (1,1) {Prima riga, \\ seconda riga \par};`
    come posso controllare la posizione dell’etichetta rispetto al punto [tt](1,1)?[/tt] Se usassi [tt]\label,[/tt] potrei scrivere
    `\node (punto) [align=left,label={90:$A_p$}] at (1,1) {};`
    ma non potrei più mettere su due righe l’etichetta (almeno, io non ne sono capace). È vero, potrei fare le cose manualmente:
    `\node (punto) [align=left,label={0:$A_p$}] at (1,1) {};
    \node (punto) [align=left,label={0:{(descrizione)}}] at (1,.5) {};`
    ma non mi ispira molto. 🙁 C’è qualcuno che ha delle indicazioni da darmi?

    Grazie mille e buona giornata,
    Marco.

Visualizzazione 3 filoni di risposte
  • Autore
    Risposte
    • #79547
      Up
      0
      Down
      ::

      Marco87″ post=78695Ciao a tutti,

      torno ancora con una domanda riguardo a [tt]TikZ.[/tt] Ho cercato sulla documentazione ma non sono riuscito a ottenere il risultato che vorrei. Quando scrivo
      `\node (punto) [align=left] at (1,1) {Prima riga, \\ seconda riga \par};`
      come posso controllare la posizione dell’etichetta rispetto al punto [tt](1,1)?[/tt] Se usassi [tt]\label,[/tt] potrei scrivere
      `\node (punto) [align=left,label={90:$A_p$}] at (1,1) {};`
      ma non potrei più mettere su due righe l’etichetta (almeno, io non ne sono capace). È vero, potrei fare le cose manualmente:
      `\node (punto) [align=left,label={0:$A_p$}] at (1,1) {};
      \node (punto) [align=left,label={0:{(descrizione)}}] at (1,.5) {};`
      ma non mi ispira molto. 🙁 C’è qualcuno che ha delle indicazioni da darmi?

      Grazie mille e buona giornata,
      Marco.

      Riporto un esempio utilizzando soltanto le parole chiave`above,below,right,left` per allineare la label rispetto alle coordinate del nodo (visibile grazie al mark x).

      Codice:`
      \documentclass[11pt,a4paper]{article}

      \usepackage{tikz}

      \begin{document}
      \begin{tikzpicture}
      \draw[mark=x] plot coordinates{(1,0)};
      \node[align=left] (punto) at (1,0) {Prima riga, \\ seconda riga \par};

      \draw[mark=x] plot coordinates{(1,-1)};
      \node[align=left,left] (punto) at (1,-1) {Prima riga, \\ seconda riga \par};

      \draw[mark=x] plot coordinates{(1,-2)};
      \node[align=left,right] (punto) at (1,-2) {Prima riga, \\ seconda riga \par};

      \draw[mark=x] plot coordinates{(1,-4)};
      \node[align=left,above] (punto) at (1,-4) {Prima riga, \\ seconda riga \par};

      \draw[mark=x] plot coordinates{(1,-5)};
      \node[align=left,below] (punto) at (1,-5) {Prima riga, \\ seconda riga \par};

      \draw[mark=x] plot coordinates{(1,-7)};
      \node[align=left,below right] (punto) at (1,-7) {Prima riga, \\ seconda riga \par};
      \node[align=left,below left] (punto) at (1,-7) {Prima riga, \\ seconda riga \par};

      \draw[mark=x] plot coordinates{(1,-10)};
      \node[align=left,above right] (punto) at (1,-10) {Prima riga, \\ seconda riga \par};
      \node[align=left,above left] (punto) at (1,-10) {Prima riga, \\ seconda riga \par};
      \end{tikzpicture}
      \end{document}
      ` Risultato:

      [attachment=483]Immagine_2012-10-05.jpg[/attachment]

      Ciao
      Claudio

      Attachments:
      You must be logged in to view attached files.
    • #79548
      Up
      0
      Down
      ::


      Ciao Claudio,

      grazie mille! 😀 In effetti avevo provato anche quella soluzione, ma sono stato ingannato dal comportamento che adesso cerco di descrivere. Se io scrivo:
      `\node [align=left,”posizione”] (scritta) at ($(A)+(2,-1.5)$) {Prima riga, \\ seconda riga \par};
      \draw [->] (scritta) — (A);
      \draw [->,red] ($(A)+(2,-1.5)$) — (A);`
      a seconda che, al posto di [tt]”posizione”[/tt] scriva una fra le alternative [tt]left, below, right[/tt] e [tt]above,[/tt] la freccia che ottengo cambia. Evidentemente c’è qualcosa che non conosco nel comportamento di [tt]\node.[/tt]

      Grazie ancora e buona giornata,
      Marco.

    • #79549
      Up
      0
      Down
      ::

      Marco87″ post=78704Ciao Claudio,

      grazie mille! 😀 In effetti avevo provato anche quella soluzione, ma sono stato ingannato dal comportamento che adesso cerco di descrivere. Se io scrivo:
      `\node [align=left,”posizione”] (scritta) at ($(A)+(2,-1.5)$) {Prima riga, \\ seconda riga \par};
      \draw [->] (scritta) — (A);
      \draw [->,red] ($(A)+(2,-1.5)$) — (A);`
      a seconda che, al posto di [tt]”posizione”[/tt] scriva una fra le alternative [tt]left, below, right[/tt] e [tt]above,[/tt] la freccia che ottengo cambia. Evidentemente c’è qualcosa che non conosco nel comportamento di [tt]\node.[/tt]

      Grazie ancora e buona giornata,
      Marco.

      Hai ragione, le cose cambiano a seconda di come allinei il testo. Il motivo è semplice e il seguente esempio dovrebbe essere di aiuto:`
      \documentclass{article}
      \usepackage{tikz}
      \usetikzlibrary{calc}

      \begin{document}
      \begin{tikzpicture}
      \coordinate (A) at (0,0);
      \node [draw,align=left,left] (scritta) at ($(A)+(2,-1.5)$) {Prima riga, \\ seconda riga \par};
      \draw [->] (scritta) — (A);
      \draw [->,red] ($(A)+(2,-1.5)$) — (A);
      \draw[draw=none,mark=x] plot coordinates{(0,0) ($(A)+(2,-1.5)$) (scritta.center)};
      \end{tikzpicture}
      \begin{tikzpicture}
      \coordinate (A) at (0,0);
      \node [draw,align=left,right] (scritta) at ($(A)+(2,-1.5)$) {Prima riga, \\ seconda riga \par};
      \draw [->] (scritta) — (A);
      \draw [->,red] ($(A)+(2,-1.5)$) — (A);
      \draw[draw=none,mark=x] plot coordinates{(0,0) ($(A)+(2,-1.5)$) (scritta.center)};
      \end{tikzpicture}
      \begin{tikzpicture}
      \coordinate (A) at (0,0);
      \node [draw,align=left,above] (scritta) at ($(A)+(2,-1.5)$) {Prima riga, \\ seconda riga \par};
      \draw [->] (scritta) — (A);
      \draw [->,red] ($(A)+(2,-1.5)$) — (A);
      \draw[draw=none,mark=x] plot coordinates{(0,0) ($(A)+(2,-1.5)$) (scritta.center)};
      \end{tikzpicture}
      \begin{tikzpicture}
      \coordinate (A) at (0,0);
      \node [draw,align=left,below] (scritta) at ($(A)+(2,-1.5)$) {Prima riga, \\ seconda riga \par};
      \draw [->] (scritta) — (A);
      \draw [->,red] ($(A)+(2,-1.5)$) — (A);
      \draw[draw=none,mark=x] plot coordinates{(0,0) ($(A)+(2,-1.5)$) (scritta.center)};
      \end{tikzpicture}
      \end{document}
      ` Osserva il risultato grafico:

      [attachment=485]Immagine_2012-10-05-3.jpg[/attachment]

      In rosso evidenzio la freccia che dal punto di origine A connette il punto in cui viene definito il nodo (scritta). Nota però, che quando tu scrivi:`
      \draw [->] (scritta) — (A);
      ` in realtà ti stai riferendo ad (scritta.center). Infatti il nodo ha origine in [tt]($(A)+(2,-1.5)$)[/tt], ma tu ne definisci il testo con un certo orientamento ancorato in un determinato modo e come conseguenza il suo centro naturale cambia. Chiaramente in un nodo di tipo`
      \node [draw,align=left] (scritta) at ($(A)+(2,-1.5)$) {};
      ` con testo vuoto e senza ancore particolari il suo centro e il suo punto di origine coincidono (l’allineamento infatti non incide per nulla visto che non c’è testo).

      Ciao
      Claudio

      Attachments:
      You must be logged in to view attached files.
    • #79550
      Up
      0
      Down
      ::


      Ciao Claudio,

      grazie mille della spiegazione! Ora ho capito come funziona. 🙂

      Grazie ancora e buon week end!
      Marco.

Visualizzazione 3 filoni di risposte
  • Devi essere connesso per rispondere a questo topic.

Go to top