[RISOLTO] diagramma spider con TIKZ

  • Creatore
    Topic
  • #74777
    matraz
    Partecipante
      Up
      0
      Down
      ::


      Ultimamente mi pare di notare un grande aumento dei messaggio su tikz, ciò mi ha incuriosito e ho voluto provare a fare un grafico spider, a partire da un esempio trovato online…

      Quello che ho fatto è questo

      `
      \documentclass{article}
      \usepackage{tikz}
      \usetikzlibrary{shapes}

      \begin{document}

      \newcommand{\D}{4} % number of dimensions (config option)
      \newcommand{\U}{100} % number of scale units (config option)

      \newdimen\R % maximal diagram radius (config option)
      \R=3.5cm
      \newdimen\L % radius to put dimension labels (config option)
      \L=4cm

      \newcommand{\A}{360/\D} % calculated angle between dimension axes

      \begin{figure}[htbp]
      \centering

      \begin{tikzpicture}[scale=1]
      \path (0:0cm) coordinate (O); % define coordinate for origin

      % draw the spiderweb
      \foreach \X in {1,…,\D}{
      \draw (\X*\A:0) — (\X*\A:\R);
      }

      \foreach \Y in {0,…,\U}{
      \foreach \X in {1,…,\D}{
      \path (\X*\A:\Y*\R/\U) coordinate (D\X-\Y);
      \fill (D\X-\Y) circle (1pt);
      }
      \draw [opacity=0.3] (0:\Y*\R/\U) \foreach \X in {1,…,\D}{
      — (\X*\A:\Y*\R/\U)
      } — cycle;
      }

      % define labels for each dimension axis (names config option)
      \path (1*\A:\L) node (L1) {\tiny ADL};
      \path (2*\A:\L) node (L2) {\tiny Deficit cognitivo};
      \path (3*\A:\L) node (L3) {\tiny Dist. comportamento};
      \path (4*\A:\L) node (L4) {\tiny Dist. umore};

      % for each sample case draw a path around the web along concrete values
      % for the individual dimensions. Each node along the path is labeled
      % with an identifier using the following scheme:
      %
      % D, dimension a number between 1 and \D (#dimensions) and
      % value a number between 0 and \U (#scale units)
      %
      % The paths will be drawn half-opaque, so that overlapping parts will be
      % rendered in a composite color.

      % Example Case 2 (green)
      %
      % D1 (Security): 2/7; D2 (Content Quality): 2/7; D3 (Performance): 5/7;
      % D4 (Stability): 1/7; D5 (Usability): 4/7; D6 (Generality): 1/7;
      % D7 (Popularity): 7/7
      \draw
      (D1-28.57) —
      (D2-83.33) —
      (D3-5.26) —
      (D4-21.43) —
      cycle;

      % Example Case 3 (blue)
      %
      % D1 (Security): 1/7; D2 (Content Quality): 7/7; D3 (Performance): 4/7;
      % D4 (Stability): 4/7; D5 (Usability): 3/7; D6 (Generality): 5/7;
      % D7 (Popularity): 2/7
      \draw
      (D1-21.42) —
      (D2-66.67) —
      (D3-57.89) —
      (D4-78.57) —
      cycle;

      \end{tikzpicture}

      \end{figure}
      `

      Non male per una principante, ma mi restano due problemi:
      1. vorrei capire dove viene impostata la scala perchè adesso lui disegna tutte le righe da 0 a 100 col risultato cheil grafico è grigio…a un certo punto ci sono dei riferimenti, ma non ne sono venuta a capo
      2. come si fa a impostare la legenda?

      ringrazio chiunque sappia aiturmi

      matilde

    Visualizzazione 9 filoni di risposte
    • Autore
      Risposte
      • #74778
        Up
        0
        Down
        ::


        Ciao Claudio,

        1. Se riduci il valore all’interno di [tt]\newcommand{\U}{100}[/tt] non hai più quel grafico così fitto. Inoltre puoi modificare la dimensione del disegno modificando [tt][scale=1];[/tt]
        2. Dove andrebbe posizionata la legenda?

        Non sono certo un “guru” di [tt]TikZ,[/tt] ma forse se capisco cosa intendi fare, posso darti una mano (intanto che non interviene qualcuno di più esperto di me).

        Ciao,
        Marco.

      • #74779
        matraz
        Partecipante
          Up
          0
          Down
          ::


          Ciao Marco, ti ringrazio per la disponibilità

          [cite]
          Se riduci il valore all’interno di \newcommand{\U}{100} non hai più quel grafico così fitto. Inoltre puoi modificare la dimensione del disegno modificando [scale=1];
          [\cite]

          se riduci il valore di \U in sostanza riduco il range dei valori immissibili… è come se ponessi il limite massimo della scala a un valore inferiore
          [cite]
          Dove andrebbe posizionata la legenda?
          [\cite]

          Direi adestra, alto o basso.

          mah…

          è un mondo a parte tikz….

        • #74780
          matraz
          Partecipante
            Up
            0
            Down
            ::


            Ciao Marco, ti ringrazio per la disponibilità

            1. Se riduci il valore all’interno di \newcommand{\U}{100} non hai più quel grafico così fitto. Inoltre puoi modificare la dimensione del disegno modificando [scale=1];

            se riduci il valore di \U in sostanza riduco il range dei valori immissibili… è come se ponessi il limite massimo della scala a un valore inferiore

            2. Dove andrebbe posizionata la legenda?

            Direi adestra, alto o basso.

            mah…

            è un mondo a parte tikz….

          • #74781
            Up
            0
            Down
            ::


            Ciao,

            mi dispiace non esserti stato utile. Riguardo al 1° punto, non ho capito cosa intendi fare. Riguardo al 2°, in questo caso non hai a disposizione un comando [tt]\legend{…}[/tt] come in [tt]pgfplots,[/tt] per esempio. Questo diagramma in realtà è un disegno realizzato con i comandi fondamentali di [tt]TikZ.[/tt] Quindi, in questo caso, la legenda la devi disegnare tu. Potresti cercare un pacchetto simile a [tt]pgfplots,[/tt] ma per fare quel tipo di diagrammi.

            Ciao,
            Marco.

          • #74782
            matraz
            Partecipante
              Up
              0
              Down
              ::


              avrei trovato una saluzione che per certi versi pare più agile… ma ancora più criptica..

              \documentclass[]{book}
              \usepackage[utf8]{inputenc}
              \usepackage[T1]{fontenc}
              \usepackage[upright]{fourier}
              \usepackage[usenames,dvipsnames]{xcolor}
              \usepackage{tkz-kiviat,numprint,fullpage}
              \usepackage{pgfplotstable}
              \usetikzlibrary{arrows}
              \thispagestyle{empty}

              \begin{document}

              \begin{tikzpicture}

              \tkzKiviatDiagramFromFile[
              scale=.5,
              label distance=.5cm,
              gap = 1,label space=3,
              lattice = 10]{tableae.dat}

              \tkzKiviatLineFromFile[thick,
              color = red,
              mark = ball,
              ball color = red,
              mark size = 4pt,
              fill = red!20]{tableae.dat}{1}
              %\tkzKiviatLineFromFile[thick,
              color = blue,
              mark = ball,
              ball color = red,
              mark size = 4pt,
              fill = red!20]{tableae.dat}{2}
              \tkzKiviatLineFromFile[thick,
              color = gray,
              mark = ball,
              ball color = red,
              mark size = 4pt,
              fill = red!20]{tableae.dat}{3}

              \end{tikzpicture}

              \end{document}

              che usa un file separato che si chiama tableae.dat siffatto

              flag_moduli CDAoss CDAideale narnali
              ADL 2.8 2.1 1.4
              umore 2.1 7.8 0.2
              {def cog} 8.3 6.6 6.6
              {dist comp} 5.0 5.7 1.5

              però qui ci sono dei problemi diversi…

              ma ancora non ci sono…

            • #74783
              Up
              0
              Down
              ::


              Ciao,

              hai provato a dare un’occhiata alla documentazione del pacchetto [tt]tkz-kiviat?[/tt] È un pacchetto dedicato a quei diagrammi. Purtroppo, ripeto, non sono un “guru” di [tt]TikZ,[/tt] e quei diagramma non li conoscevo nemmeno, quindi non posso esserti di grande aiuto.

              Ciao,
              Marco.

            • #74784
              Up
              0
              Down
              ::


              Ciao,

              matraz” post=73915Non male per una principante

              in realtà hai fatto un grosso errore. Non partire mai da un esempio già fatto, perchè questi sono i risultati, cioè non si riesce a capire come cambiare qualcosa. Quando si è all’inizio è bene partire da cose semplici ed incrementare man mano da soli, altrimenti si rischia di avere tra le mani qualcosa di ingestibile.

              ma mi restano due problemi:
              1. vorrei capire dove viene impostata la scala perchè adesso lui disegna tutte le righe da 0 a 100 col risultato cheil grafico è grigio…a un certo punto ci sono dei riferimenti, ma non ne sono venuta a capo

              Facendo riferimento al primo codice, risolvi variando l’intervallo di incremento del secondo ciclo for, cioè
              ` \foreach \Y in {0,3,…,\U}{
              \foreach \X in {1,…,\D}{
              \path (\X*\A:\Y*\R/\U) coordinate (D\X-\Y);
              \fill (D\X-\Y) circle (1pt);
              }
              \draw [opacity=0.3] (0:\Y*\R/\U) \foreach \X in {1,…,\D}{
              — (\X*\A:\Y*\R/\U)
              } — cycle;
              }
              `
              Cambia il 3 nella prima riga a piacere.

              2. come si fa a impostare la legenda?

              Per questo passo per ora.

              Ciao
              Fra

            • #74785
              Up
              0
              Down
              ::


              Per quanto riguarda la legenda, è vero che se usi solo TikZ non puoi “chiamare” il comando [tt]\legend[/tt], ma nulla vieta di crearla ad hoc.

              Siccome ultimamente sono a corto di tempo, ti allego il codice di uno dei miei primissimi disegni con TikZ in cui avevo creato un grafico molto semplice con legenda (purtroppo non conoscevo ancora pgfplots 🙁 ):

              `
              \begin{center}
              \begin{tikzpicture}[domain=-2:2]
              \draw[-stealth,thick] (-2,0) — (3.2,0) node[below] {$N$};
              \draw[-stealth,thick] (0,-2.5) — (0,2.5) node

              {$SNR_q$};
              \draw[blue!10,very thick] (-2,-2)–(2,2) ;
              \draw[orange,very thick] (-2,-1.24)–(1.7,2.4);
              \draw[red,very thick] (-2,-0.35)–(1,2.5);
              \draw[green!90!black,very thick] (-1.5,-2.5)–(2.5,1.5) ;
              %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
              \draw[dotted] (0,-1.05)–(3.2,-1.05)node

              {\begin{footnotesize}-4.77\end{footnotesize}};
              \draw[dotted] (0,0.7)–(3.2,0.7)node

              {\begin{footnotesize}1.76\end{footnotesize}};
              \draw[dotted] (0,1.6)–(3.2,1.6)node

              {\begin{footnotesize}4.77\end{footnotesize}};
              %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
              \draw[rounded corners] (5,-2)rectangle(10,2);
              \draw[blue!10,ultra thick] (5.5,-0.4)–(6.5,-0.4) node

              {\begin{footnotesize}onda triangolare\end{footnotesize}};
              \draw[orange,ultra thick] (5.5,0.4)–(6.5,0.4)node

              {\begin{footnotesize}onda sinusoidale\end{footnotesize}};
              \draw[red,ultra thick] (5.5,1.25)–(6.5,1.25)node

              {\begin{footnotesize}onda quadra\end{footnotesize}};
              \draw[green!90!black,ultra thick] (5.5,-1.25)–(6.5,-1.25) node

              {\begin{footnotesize}segnale vocale\end{footnotesize}};
              \end{tikzpicture}
              \end{center}
              `
              Come diceva anche @spike, per capire i principi base del codice la miglior cosa da fare non è proprio andare a pescare degli esempi su TeXample o TeX.SE e modificarli. Potresti però trovare interessante la guida Introduzione all’uso di TikZ in Ingengeria nella sezione Documentazione -> Guide Tematiche. Altrimenti poi è facile dire:

              è un mondo a parte tikz….

              Ciao
              Claudio

            • #74786
              matraz
              Partecipante
                Up
                0
                Down
                ::


                vi ringrazio per la vostra pazienza e incasso le critiche 🙂
                Avete senza dubbio ragione sul fatto che partendo da zero si capisce motlto meglio cosa si fa, l’unica scusante è che mi sono appassionata a latex utilizzandolo per motivi di lavoro e partendo dalla base, semplici documenti di testo con incluse figure e tabelle, mi sono via via incaponita su questo o quel problema riuscendo a migliorare sia il prodotto che la comprensione dello strumento.
                Non ho tanto tempo da dedicare allo studio e spesso alcuni esempi mi hanno aperto un mondo…

                Nel caso di tikz invece posso dire che me ne hanno aperto un altro, nel senso che lo percepisco un pò come se fosse un tex… , tant’è che poi sono venuti fuori gli altri pacchetti su di esso costruiti…

                ma mi interessa e primo o poi arriverò a farci quel che mi serve…

                grazie comunque degli spunti che mi studierò

                matilde

              • #74787
                matraz
                Partecipante
                  Up
                  0
                  Down
                  ::


                  La storia è finita così:

                  `
                  \begin{tikzpicture}

                  \tkzKiviatDiagramFromFile[
                  scale=.4,
                  label distance=1.4cm,
                  gap = 1,label space=1.6,
                  font = \footnotesize,
                  lattice = 10]{figure/tableae.dat}

                  \tkzKiviatLineFromFile[thick,
                  color = red,
                  mark = ball,
                  ball color = red,
                  mark size = 4pt,
                  fill = red!20]{figure/tableae.dat}{1}

                  \tkzKiviatLineFromFile[thick,
                  color = blue,
                  mark = ball,
                  ball color = blue,
                  mark size = 4pt,
                  fill =blue!20]{figure/tableae.dat}{2}
                  \tkzKiviatLineFromFile[thick,
                  color = black,
                  mark = ball,
                  ball color = black,
                  mark size = 4pt,
                  fill = black!20]{figure/tableae.dat}{3}
                  \draw[anchor=north, rounded corners] (5,10)rectangle(13,7);
                  \draw[black,ultra thick] (5.5,9.5)–(6.5,9.5) node[right,black] {\begin{footnotesize}CDA osservato\end{footnotesize}};
                  \draw[blue,ultra thick] (5.5,8.5)–(6.5,8.5)node[right,black] {\begin{footnotesize}CDA ideale\end{footnotesize}};
                  \draw[red,ultra thick] (5.5,7.5)–(6.5,7.5)node[right,black] {\begin{footnotesize}Narnali\end{footnotesize}};
                  \end{tikzpicture}

                  %dove tableae.dat è:
                  flag_moduli CDAoss CDAideale esempio
                  ADL 2.8 2.1 1.4
                  {etic 1} 2.1 7.8 0.2
                  {etic 2} 8.3 6.6 6.6
                  {etic 3} 5.0 5.7 1.5
                  `

                  grazie a tutti!
                  matilde

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

              Go to top