Riempimento figure con TikZ

  • Creatore
    Topic
  • #79301
    Up
    0
    Down
    ::


    Ciao a tutti,
    ho lasciato un post circa tre settimane riguardo ad alcune figure da inserire nella mia tesi e ho avuto degli ottimi consigli soprattutto riguardo all’uitlizzo del Tiks e dei suoi comandi. Adesso però avrei un altro problema e cioè mi piacerebbe riempire una parte della mia fgura con un colore più chiaro rispetto a quello del contorno.
    Faccio un esempio:
    se la figura è quella che viene fuori da questi comandi

    `\begin{tikzpicture}
    \setscale{1}
    \setminycoord{0}
    \setmaxycoord{5}
    \setminxcoord{0}
    \setmaxxcoord{5}
    % Axes
    \drawaxes
    \settickaxes[0.025]
    \path [fill=lightgray] (1,6) — (1,3) — (3,3) — (3,1) — (6,1) — (6,6) — (1,6);
    \draw [very thick, red] (1,5.9) — (1,3) — (5.9,3);
    \draw [very thick, red] (3,3) — (3,2) — (5.9,2);
    \draw [very thick, red] (3,2) — (3,1) — (5.9,1);
    \draw [very thick, blue] (0,0) — (0,5.9);
    \draw [very thick, blue] (1,0) — (5.9,0);
    \drawpoints[0.1]{{(3,2)/a/red},{(1,3)/b/red},{(3,1)/c/red},{(0,0)/d/blue},{(1,0)/e/blue},{(1,1)/f/blue},{(2,1)/g/blue},{(2,2)/h/blue},{(1,2)/i/blue}}
    \end{tikzpicture}`

    a me piacerebbe colorare la zona all’interno non di grigio ma di un rosso leggermente più chiaro, un po’ in trasparenza per rendere più comprensibile il grafico.
    So che è una richiesta forse insolita o impossibile ma spero che qualcuno possa aiutarmi come già successo 3 settimane fa.

    Altrimenti grazie lo stesso a tutti.

Visualizzazione 11 filoni di risposte
  • Autore
    Risposte
    • #79302
      Up
      0
      Down
      ::


      Ho provato a compilare il codice che hai inserito nel tuo messaggio, ma latex restituisce diversi errori. Puoi mettere anche un preambolo minimo che utilizzi?

      Comunque, a parziale risposta del tuo problema, puoi mettere tra le opzioni [tt]opacity=0.5[/tt] (o un altro numero $x$ con $0 \le x \le 1$) per avere il colore translucido e vedere anche ciò che c’è sotto. Quindi, per inserire il colore rosso schiarito, puoi scrivere [tt]red!40[/tt] per avere il 40% del rosso. Variando a tuo piacimento il numero, puoi trovare la tonalità di rosso che preferisci.

      Ciao,

      Andrea

    • #79303
      Up
      0
      Down
      ::


      Ciao Andrea, hai ragione, ho dimenticato di inserire le premesse nella fretta. Lo faccio subito

      `\usepackage{tikz}
      \usetikzlibrary{calc,backgrounds,positioning}
      % Declarations
      \pgfmathtruncatemacro\scale{1}
      \pgfmathtruncatemacro\minycoord{-5}
      \pgfmathtruncatemacro\step{1}
      \pgfmathtruncatemacro\maxycoord{5}
      \pgfmathtruncatemacro\minxcoord{-5}
      \pgfmathtruncatemacro\maxxcoord{5}

      % Settings
      \newcommand{\setscale}[1]{\pgfmathtruncatemacro\scale{#1}}
      \newcommand{\setminycoord}[1]{\pgfmathtruncatemacro\minycoord{#1/\scale}}
      \newcommand{\setmaxycoord}[1]{\pgfmathtruncatemacro\maxycoord{#1/\scale}}
      \newcommand{\setmaxxcoord}[1]{\pgfmathtruncatemacro\maxxcoord{#1/\scale}}
      \newcommand{\setminxcoord}[1]{\pgfmathtruncatemacro\minxcoord{#1/\scale}}

      \newcommand{\drawaxes}{
      \ifnum\minycoord=0
      \draw[-stealth,semithick,shorten >=-1cm](0,\minycoord)–(0,\maxycoord);
      \else
      \draw[stealth-stealth,semithick,shorten <=-1cm,shorten >=-1cm](0,\minycoord)–(0,\maxycoord);
      \fi
      \ifnum\minycoord=0
      \draw[-stealth,semithick,shorten >=-1cm](\minxcoord,0)–(\maxxcoord,0);
      \else
      \draw[stealth-stealth,semithick,shorten <=-1cm,shorten >=-1cm](\minxcoord,0)–(\maxxcoord,0);
      \fi
      }

      \newcommand{\setlabelaxes}[1][0.1]{
      % Y-axis
      \pgfmathtruncatemacro\startingy\minycoord
      \pgfmathparse{add(\startingy,\step)}\pgfmathresult
      \pgfmathtruncatemacro\secondy\pgfmathresult
      \pgfmathtruncatemacro\lasty\maxycoord
      \foreach \y [evaluate=\y as \scaledy using \y*\scale] in {\startingy,\secondy,…,\lasty}{
      \pgfmathtruncatemacro\labely\scaledy
      \pgfmathparse{notequal(\labely,0)}\pgfmathresult
      \ifnum\pgfmathresult=1
      \draw[semithick] (#1,\y)–(-#1,\y) node

      {\labely};
      \fi
      }
      % X-axis
      \pgfmathtruncatemacro\startingx\minxcoord
      \pgfmathparse{add(\startingx,\step)}\pgfmathresult
      \pgfmathtruncatemacro\secondx\pgfmathresult
      \pgfmathtruncatemacro\lastx\maxxcoord
      \foreach \x [evaluate=\x as \scaledx using \x*\scale] in {\startingx,\secondx,…,\lastx}{
      \pgfmathtruncatemacro\labelx\scaledx
      \pgfmathparse{notequal(\labelx,0)}\pgfmathresult
      \ifnum\pgfmathresult=1
      \draw[semithick] (\x,#1)–(\x,-#1) node[below] {\labelx};
      \fi
      }
      }

      \newcommand{\settickaxes}[1][0.1]{
      % Y-axis
      \pgfmathtruncatemacro\startingy\minycoord
      \pgfmathparse{add(\startingy,\step)}\pgfmathresult
      \pgfmathtruncatemacro\secondy\pgfmathresult
      \pgfmathtruncatemacro\lasty\maxycoord
      \foreach \y[evaluate=\y as \scaledy using \y*\scale] in {\startingy,\secondy,…,\lasty}{
      \pgfmathtruncatemacro\labely\scaledy
      \pgfmathparse{notequal(\labely,0)}\pgfmathresult
      \ifnum\pgfmathresult=1
      \draw[semithick] (#1,\y)–(-#1,\y);
      \fi
      }
      % X-axis
      \pgfmathtruncatemacro\startingx\minxcoord
      \pgfmathparse{add(\startingx,\step)}\pgfmathresult
      \pgfmathtruncatemacro\secondx\pgfmathresult
      \pgfmathtruncatemacro\lastx\maxxcoord
      \foreach \x [evaluate=\x as \scaledx using \x*\scale] in {\startingx,\secondx,…,\lastx}{
      \pgfmathtruncatemacro\labelx\scaledx
      \pgfmathparse{notequal(\labelx,0)}\pgfmathresult
      \ifnum\pgfmathresult=1
      \draw[thick] (\x,#1)–(\x,-#1);
      \fi
      }
      }

      \newcommand{\drawpoints}[2][0.1]{
      \foreach \place/\name/\color in {#2}
      \draw[draw=none,fill= \color] \place circle[radius=#1] node(\name) {};
      }

      \newcommand{\drawpins}[2][cyan]{
      \foreach \place/\name/\position in {#2}
      \draw[draw=#1, shorten <=0.45cm] \place -- (\name.\position); } Comunque ho provato a fare come tu mi hai scritto e ho già risolto il problema per cui grazie mille, il grafico è perfetto. Riporto di nuovo i comandi che ho utilizzo giusto perchè magari potrebbe essere utile a qualcun'altro che è ancora alle prime armi come me. \begin{tikzpicture} \setscale{1} \setminycoord{0} \setmaxycoord{5} \setminxcoord{0} \setmaxxcoord{5} % Axes \drawaxes \settickaxes[0.025] \path [fill=red!40] (1,6) -- (1,3) -- (3,3) -- (3,1) -- (6,1) -- (6,6) -- (1,6); \draw [very thick, red] (1,5.9) -- (1,3) -- (5.9,3); \draw [very thick, red] (3,3) -- (3,2) -- (5.9,2); \draw [very thick, red] (3,2) -- (3,1) -- (5.9,1); \draw [very thick, blue] (0,0) -- (0,5.9); \draw [very thick, blue] (1,0) -- (5.9,0); \drawpoints[0.1]{{(3,2)/a/red},{(1,3)/b/red},{(3,1)/c/red},{(0,0)/d/blue},{(1,0)/e/blue},{(1,1)/f/blue},{(2,1)/g/blue},{(2,2)/h/blue},{(1,2)/i/blue}} \end{tikzpicture}` Grazie ancora. Gaia

    • #79304
      Up
      0
      Down
      ::


      Prova a sostituire il tuo [tt]\path[/tt] con questo:

      `
      \path [fill=red!20,opacity=0.3] (1,6) — (1,3) — (3,3) — (3,1) — (6,1) — (6,6) — (1,6);
      `

      Dimmi se ti può andare bene o almeno se sono nella direzione giusta.

      Ciao,

      Andrea

    • #79305
      Up
      0
      Down
      ::


      E’ esattamente il comando che mi serviva e non riuscivo a trovare invece, grazie ancora.
      Sto provando con tutti gli altri colori ottenendo buoni risultati (a parte con l’orange ma forse è una questione di bilanciamento dell’opacità) per cui grazie mille e buona giornata!

    • #79306
      Up
      0
      Down
      ::

      Ga” post=78401E’ esattamente il comando che mi serviva e non riuscivo a trovare invece, grazie ancora.
      Sto provando con tutti gli altri colori ottenendo buoni risultati (a parte con l’orange ma forse è una questione di bilanciamento dell’opacità) per cui grazie mille e buona giornata!

      Gaia,

      se vuoi cambiare il colore agli assi puoi provare sostituendo la precedente dichiarazione di [tt]\settickaxes[/tt] con:
      `
      \newcommand{\settickaxes}[2][0.1]{
      % Y-axis
      \pgfmathtruncatemacro\startingy\minycoord
      \pgfmathparse{add(\startingy,\step)}\pgfmathresult
      \pgfmathtruncatemacro\secondy\pgfmathresult
      \pgfmathtruncatemacro\lasty\maxycoord
      \foreach \y[evaluate=\y as \scaledy using \y*\scale] in {\startingy,\secondy,…,\lasty}{
      \pgfmathtruncatemacro\labely\scaledy
      \pgfmathparse{notequal(\labely,0)}\pgfmathresult
      \ifnum\pgfmathresult=1
      \draw[very thick,#2] (#1,\y)–(-#1,\y);
      \fi
      }
      % X-axis
      \pgfmathtruncatemacro\startingx\minxcoord
      \pgfmathparse{add(\startingx,\step)}\pgfmathresult
      \pgfmathtruncatemacro\secondx\pgfmathresult
      \pgfmathtruncatemacro\lastx\maxxcoord
      \foreach \x [evaluate=\x as \scaledx using \x*\scale] in {\startingx,\secondx,…,\lastx}{
      \pgfmathtruncatemacro\labelx\scaledx
      \pgfmathparse{notequal(\labelx,0)}\pgfmathresult
      \ifnum\pgfmathresult=1
      \draw[very thick,#2] (\x,#1)–(\x,-#1);
      \fi
      }
      }
      ` e la dichiarazione di [tt]\drawaxes[/tt] con:
      `
      \newcommand{\drawaxes}[1][black]{
      \ifnum\minycoord=0
      \draw[#1,-stealth,very thick,shorten >=-1cm](0,\minycoord)–(0,\maxycoord);
      \else
      \draw[#1,stealth-stealth,very thick,shorten <=-1cm,shorten >=-1cm](0,\minycoord)–(0,\maxycoord);
      \fi
      \ifnum\minycoord=0
      \draw[#1,-stealth,very thick,shorten >=-1cm](\minxcoord,0)–(\maxxcoord,0);
      \else
      \draw[#1,stealth-stealth,very thick,shorten <=-1cm,shorten >=-1cm](\minxcoord,0)–(\maxxcoord,0);
      \fi
      }
      `

      A questo punto sei libera di personalizzare i colori degli assi ed evitare di “ricolorarli” (si vede 😉 ) con:
      `\draw [very thick, blue] (0,0) — (0,5.9);
      \draw [very thick, blue] (1,0) — (5.9,0);`Pertanto il codice “nuovo” della tua ultima figura diventa:
      `
      \begin{tikzpicture}
      \setscale{1}
      \setminycoord{0}
      \setmaxycoord{5}
      \setminxcoord{0}
      \setmaxxcoord{5}
      % Axes
      \drawaxes[blue]
      \settickaxes[0.025]{blue}
      \path [fill=red!40] (1,6) — (1,3) — (3,3) — (3,1) — (6,1) — (6,6) — (1,6);
      \draw [very thick, red] (1,5.9) — (1,3) — (5.9,3);
      \draw [very thick, red] (3,3) — (3,2) — (5.9,2);
      \draw [very thick, red] (3,2) — (3,1) — (5.9,1);
      \drawpoints[0.1]{{(3,2)/a/red},{(1,3)/b/red},{(3,1)/c/red},{(0,0)/d/blue},{(1,0)/e/blue},{(1,1)/f/blue},{(2,1)/g/blue},{(2,2)/h/blue},{(1,2)/i/blue}}
      \end{tikzpicture}
      `

      A beneficio di chi legge il filone, il codice originario si può reperire a http://www.guitex.org/home/it/forum/5-tex-e-latex/77209-grafici-con-xy-picture#77228.

      Ciao
      Claudio

    • #79307
      Up
      0
      Down
      ::


      Grazie mille Claudio, sia per il codice che mi hai postato la scorsa volta e che mi sta risultando davvero molto utile e semplice e sia per il nuovo consiglio per la colorazione degli assi.
      Ne farò buon uso! 🙂

      Gaia
      P.S. Chiedo scusa se non ho fatto riferimento al fatto che le impostazioni del preambolo mi erano state postate da te e ti ringrazio ancora!

    • #79308
      Up
      0
      Down
      ::


      Ho visto nel filone precedente che Claudio ti ha suggerito l’Arte di disegnare i grafici. Un’altra guida molto interessante su TikZ è la guida tematica su che mi pare abbia scritto proprio Claudio.

      Ciao,

      Andrea

    • #79309
      Up
      0
      Down
      ::


      Grazie per il consiglio sulla guida. E dove potrei reperirla per l’esattezza (giusto per non scaricare guide inutili 😉 )?

      Gaia

    • #79310
      Up
      0
      Down
      ::


      La guida tematica la puoi trovare nella sezione “Documentazione” di questo sito, nella pagina riguardante le “guide tematiche”. La foto che appare nel precedente messaggio doveva essere, in realtà, un collegamento ipertestuale a quella della Documentazione. Ma qualcosa dev’essere andato storto 😛

      Ciao,

      Andrea

    • #79311
      Up
      0
      Down
      ::


      Operazione compiuta! Penso tu ti riferissi a questa
      /wp-content/uploads/joomla-images/doc/GuideGuIT/introingtikz.pdf
      Grazie ancora e buona giornata.

      Gaia

    • #79312
      Up
      0
      Down
      ::

      Ga” post=78494Operazione compiuta! Penso tu ti riferissi a questa
      /wp-content/uploads/joomla-images/doc/GuideGuIT/introingtikz.pdf
      Grazie ancora e buona giornata.

      Gaia

      Esatto! Proprio questa! Non so perché, ma credo che la tecnologia informatica sia alquanto dispettosa nei miei riguardi 🙁

      Buona giornata,

      Andrea

    • #79313
      Up
      0
      Down
      ::


      Ahahahahah! Il più delle volte siamo in due allora! 😀
      Grazie ancora!

      Gaia

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

Go to top