Creazione grafico con l’environment tikzpicture

  • Creatore
    Topic
  • #80903
    nazgul17
    Partecipante
      Up
      0
      Down
      ::


      Buon sabato a tutti,

      vi scrivo per chiedere un aiuto riguardante come fare un grafico cartesiano con tikzpicture. Finora ciò che sono riuscito a fare è
      [attachment=533]grafico.png[/attachment]

      ma ciò che vorrei riuscire a fare (a parte la linea verde che ho sbagliato a disegnare: è troppo in basso) è questo:
      [attachment=532]DSC_0210_res.JPG[/attachment]

      I comandi che ho usato (dentro un ambiente subfigure a sua volta dentro un ambiente figure, per la precisione) sono questi:
      `\begin{tikzpicture}
      \begin{axis}[
      ytick={-1,0,1},
      smooth,
      xmin=0, xmax=3, ymin=-1, ymax=+2,
      domain=0:+3, samples=100,
      axis x line=bottom, axis y line=left,
      width=8cm, height=4.5cm,
      legend entries={buyer's profit, seller's profit, total profit},
      legend pos=outer north east,
      xlabel=$g$, ylabel=profit,
      xtick={1,2},
      xticklabel={$r \cdot v_s$, $r \cdot v_b$},
      ytick={},
      yticklabel={}
      ]
      \addplot gnuplot {2 – x};
      \addplot gnuplot {x – 1};
      \addplot gnuplot {1};
      \end{axis}
      \end{tikzpicture}`

      Purtroppo non sono riuscito a creare le bande grigie: comandi come
      `\fill [black!20] (-1.5,-1.5) rectangle (3.5,1.5);
      \draw (1, -1) — (1, 2);`
      non fanno apparire nulla di visibile nei grafici, quindi non so come fare quelle aree sbarrate (anche grigie andrebbero bene, volendo). Inoltre non so come scrivere quel “non accettabile”.

      Come avrete notato, inoltre, ho dei problemi con le xticklabel: cos’è che non ho capito di come si usano?

      Infine, cosa (immagino) più banale di tutte, volevo che l’asse cartesiano delle x fosse disegnato all’ordinata 0 e non alla -1..

      Grazie per ogni aiuto che potrete darmi 🙂

      Attachments:
      You must be logged in to view attached files.
    Visualizzazione 5 filoni di risposte
    • Autore
      Risposte
      • #80904
        Up
        0
        Down
        ::

        nazgul17″ post=80115Buon sabato a tutti,

        vi scrivo per chiedere un aiuto riguardante come fare un grafico cartesiano con tikzpicture. Finora ciò che sono riuscito a fare è
        [attachment=533]grafico.png[/attachment]

        ma ciò che vorrei riuscire a fare (a parte la linea verde che ho sbagliato a disegnare: è troppo in basso) è questo:
        [attachment=532]DSC_0210_res.JPG[/attachment]

        I comandi che ho usato (dentro un ambiente subfigure a sua volta dentro un ambiente figure, per la precisione) sono questi:
        `\begin{tikzpicture}
        \begin{axis}[
        ytick={-1,0,1},
        smooth,
        xmin=0, xmax=3, ymin=-1, ymax=+2,
        domain=0:+3, samples=100,
        axis x line=bottom, axis y line=left,
        width=8cm, height=4.5cm,
        legend entries={buyer's profit, seller's profit, total profit},
        legend pos=outer north east,
        xlabel=$g$, ylabel=profit,
        xtick={1,2},
        xticklabel={$r \cdot v_s$, $r \cdot v_b$},
        ytick={},
        yticklabel={}
        ]
        \addplot gnuplot {2 – x};
        \addplot gnuplot {x – 1};
        \addplot gnuplot {1};
        \end{axis}
        \end{tikzpicture}`

        Purtroppo non sono riuscito a creare le bande grigie: comandi come
        `\fill [black!20] (-1.5,-1.5) rectangle (3.5,1.5);
        \draw (1, -1) — (1, 2);`
        non fanno apparire nulla di visibile nei grafici, quindi non so come fare quelle aree sbarrate (anche grigie andrebbero bene, volendo). Inoltre non so come scrivere quel “non accettabile”.

        Come avrete notato, inoltre, ho dei problemi con le xticklabel: cos’è che non ho capito di come si usano?

        Infine, cosa (immagino) più banale di tutte, volevo che l’asse cartesiano delle x fosse disegnato all’ordinata 0 e non alla -1..

        Grazie per ogni aiuto che potrete darmi 🙂

        Uno starting point:`
        \documentclass[a4paper,11pt]{article}

        \usepackage{pgfplots}
        \usetikzlibrary{patterns,backgrounds}

        \begin{document}
        \begin{tikzpicture}
        \begin{axis}[
        smooth,
        xmin=0, xmax=3.2, ymin=-1, ymax=3,
        ytick={0,1,2},
        domain=0:+3, samples=100,
        axis x line=bottom, axis y line=left,
        width=8cm, height=4.5cm,
        legend entries={buyer's profit, seller's profit, total profit},
        legend pos=outer north east,
        xlabel=$g$, ylabel=profit,
        xtick={1,2},
        xticklabels={{$r \cdot v_s$},{ $r \cdot v_b$}},
        axis x line*=center,
        ]
        \addplot {2 – x};
        \addplot {x – 1};
        \addplot {1};

        \begin{pgfonlayer}{background}
        \fill[pattern=north west lines, opacity=0.3](axis cs:0,-1) rectangle (axis cs:1,3.2);
        \node[rotate=30,font=\tiny,] at (axis cs:0.55,2.5){Non accettabile};
        \end{pgfonlayer}

        \end{axis}
        \end{tikzpicture}
        \end{document}
        `
        Alcuni dettagli: tu prima definivi un certo tipo di ytick ma poi eliminavi tali modifiche con `ytick={},
        yticklabel={}` a fine opzioni. Altra cosa: devi usare [tt]xticklabels[/tt] e non [tt]xticklabel[/tt]. Infine: a me piace molto e ne faccio largo uso della libreria [tt]backgrounds[/tt] perciò le aree da eliminare sono state realizzate così. Nota che in pgfplots puoi accedere alle coordinate riferendoti con [tt](axis cs:…)[/tt]: leggi la guida introduttiva di Lorenzo e Tommaso. Per il pattern esiste l’apposita libreria in TikZ.

        Ciao
        Claudio

      • #80905
        nazgul17
        Partecipante
          Up
          0
          Down
          ::


          Innanzitutto grazie per le tue risposte esaurienti. Purtroppo però la tua soluzione per le aree “non accettabili” non mi funziona: cioè pdflatex compila bene, ma nei grafici non c’è traccia né dei rettangoli, né del grigio :S hai idea di cosa potrebbe essere la causa?

        • #80906
          nazgul17
          Partecipante
            Up
            0
            Down
            ::


            Più precisamente, ho copiaincollato il tuo codice in un file, ed il grafico risultante non ha nessun segno di bande grigie o scritte “non accettabile”. Dici che mi manca qualche pacchetto? qualche argomento da dare a pdflatex?

          • #80907
            Up
            0
            Down
            ::

            nazgul17″ post=80126Più precisamente, ho copiaincollato il tuo codice in un file, ed il grafico risultante non ha nessun segno di bande grigie o scritte “non accettabile”. Dici che mi manca qualche pacchetto? qualche argomento da dare a pdflatex?

            Direi proprio che posso solo ipotizzare tu abbia una distribuzione vecchia/incompleta, anche se credo le librerie patterns e background già esistessero. A me, comunque, il risultato del codice risulta essere:

            [attachment=534]Immagine_2012-11-24.jpg[/attachment]

            Per ragioni di tempo ho fatto solo la prima parte, la seconda è identica. Se hai una distribuzione TeXLive su Linux non completa aggiornala; se hai una MikTeX non completa o ti installi pgf come si deve oppure fai prima a passare a TeXLive.

            Ciao
            Claudio

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


              Ho TexLive su Kubuntu, installata solo pochi mesi fa. Comunque la aggiorno e vi faccio sapere se i problemi sono risolti. Grazie per l’aiuto intanto 🙂

            • #80909
              nazgul17
              Partecipante
                Up
                0
                Down
                ::


                Avevi ragione: con un tlmgr update –all ho risolto tutto! Grazie dell’aiuto! Siete sempre i migliori quanto a disponibilità, e non solo 🙂

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

            Go to top