Miglioramento grafica istogramma

  • Creatore
    Topic
  • #82424
    Up
    0
    Down
    ::


    Ciao a tutti,
    ecco il mio primo istogramma con più serie di dati in latex:

    `\documentclass{standalone}
    \usepackage{pgfplots}
    \pgfplotsset{width=7cm,compat=newest}
    \usetikzlibrary{patterns}
    \begin{document}
    \begin{tikzpicture}
    \begin{axis}[
    ylabel=FI,
    xlabel=Sampling time,
    enlargelimits=0.30,
    symbolic x coords={$0$,$1$,$4$},
    xtick=data, xtick pos=left,
    ymajorgrids=true,
    legend style={at={(0.5,-0.25)},
    anchor=north,legend columns=-1},
    ybar,
    bar width=9pt,
    ]
    \addplot[pattern=crosshatch dots,
    pattern color=pink, draw=black]
    coordinates {($0$,0.695062) ($1$,0.240604)
    ($4$,0.736264)};
    \addplot[pattern=horizontal lines,
    pattern color=purple,
    draw=black]
    coordinates {($0$,0.591506) ($1$,0.30724)
    ($4$,0.6151015)};
    \addplot[pattern=north east lines,
    pattern color=cyan, draw=black]
    coordinates {($0$,0.838095) ($1$,0.4349925)
    ($4$,0.6431795)};
    \addplot[pattern=horizontal lines light blue,
    pattern color=light blue, draw=black]
    coordinates {($0$,0.659518) ($1$,0.3248965)
    ($4$,0.4540525)};
    \legend{RBCs,qhs-RBCs,
    IRBCs,qhs-IRBCs}
    \end{axis}
    \end{tikzpicture}
    \end{document}`

    Consigli per migliorare la grafica? E’ possibile inserire del testo nel grafico?
    Grazie, Mari

Visualizzazione 5 filoni di risposte
  • Autore
    Risposte
    • #82425
      Up
      0
      Down
      ::


      Ciao Mari,

      per il momento cerco di rispondere alla tua seconda domanda. Usando l’opzione [tt]disabledatascaling[/tt] disponi di due sistemi di riferimento di disegno e di inserimento testo. Prova a scrivere questo codice:
      `\documentclass{standalone}
      \usepackage{pgfplots}
      \pgfplotsset{width=7cm,compat=newest}
      \usetikzlibrary{patterns}
      \begin{document}
      \begin{tikzpicture}
      \begin{axis}[disabledatascaling,
      ylabel=FI,
      xlabel=Sampling time,
      enlargelimits=0.30,
      symbolic x coords={$0$,$1$,$4$},
      xtick=data, xtick pos=left,
      ymajorgrids=true,
      legend style={at={(0.5,-0.25)},
      anchor=north,legend columns=-1},
      ybar,
      bar width=9pt,
      ]
      \addplot[pattern=crosshatch dots,
      pattern color=pink, draw=black]
      coordinates {($0$,0.695062) ($1$,0.240604)
      ($4$,0.736264)};
      \addplot[pattern=horizontal lines,
      pattern color=purple,
      draw=black]
      coordinates {($0$,0.591506) ($1$,0.30724)
      ($4$,0.6151015)};
      \addplot[pattern=north east lines,
      pattern color=cyan, draw=black]
      coordinates {($0$,0.838095) ($1$,0.4349925)
      ($4$,0.6431795)};
      \addplot[pattern=horizontal lines light blue,
      pattern color=light blue, draw=black]
      coordinates {($0$,0.659518) ($1$,0.3248965)
      ($4$,0.4540525)};
      \legend{RBCs,qhs-RBCs,
      IRBCs,qhs-IRBCs}

      \node (a) at (1,.8) {Testo};
      \end{axis}
      \node (a) at (1,.8) {Testo2};
      \end{tikzpicture}
      \end{document}`
      Nota che come prima opzione di [tt]axis[/tt] ho messo [tt]disabledatascaling.[/tt] Ora cerca [tt]\end{axis}.[/tt] Appena prima e appena dopo trovi due inserimenti di testo. Quello messo all’interno dell’ambiente [tt]axis[/tt] usa il sistema di riferimento degli assi del grafico, mentre quello esterno usa le coordinate globali del disegno nel suo complesso. Naturalmente al posto di [tt]\node[/tt] potresti usare [tt]\coordinate,[/tt] a seconda di quello che vuoi fare. In ogni caso puoi usare i comandi di disegno di [tt]TikZ[/tt] all’interno del tuo grafico usando uno dei due sistemi di riferimento di cui ti ho parlato.

      Spero di essere stato utile; altrimenti cerca di specificare meglio cosa intendi fare. 🙂

      Ciao e buona giornata,
      Marco.

    • #82426
      Up
      0
      Down
      ::


      Ciao Mari,

      torno per la tua prima domanda. Naturalmente quanto ti dirò sarà opinabile, in quanto questione di gusti, ma magari ti può piacere. Ecco qualcosa che io personalmente farei in maniera diversa:
      `\documentclass{standalone}
      \usepackage{pgfplots}
      \pgfplotsset{width=7cm,compat=newest}
      \usetikzlibrary{patterns}
      \begin{document}
      \begin{tikzpicture}
      \begin{axis}[disabledatascaling,
      ylabel=FI,
      xlabel=Sampling time,
      enlargelimits=0.30,
      symbolic x coords={$0$,$1$,$4$},
      xtick=data, xtick pos=left,
      ymajorgrids=true,
      legend style={at={(0.5,-0.25)},
      anchor=north,legend columns=-1},
      ybar,
      bar width=5pt]

      \addplot[top color=gray!15,
      bottom color=gray,
      draw=black]
      coordinates {($0$,0.695062) ($1$,0.240604)
      ($4$,0.736264)};

      \addplot[top color=cyan!15,
      bottom color=cyan,
      draw=black]
      coordinates {($0$,0.591506) ($1$,0.30724)
      ($4$,0.6151015)};

      \addplot[top color=orange!15,
      bottom color=orange,
      draw=black]
      coordinates {($0$,0.838095) ($1$,0.4349925)
      ($4$,0.6431795)};

      \addplot[top color=pink!15,
      bottom color=pink,
      draw=black]
      coordinates {($0$,0.659518) ($1$,0.3248965)
      ($4$,0.4540525)};

      \legend{RBCs,qhs-RBCs,IRBCs,qhs-IRBCs}

      \node (a) at (1,.8) {Testo};
      \end{axis}
      \node (a) at (1,.8) {Testo2};
      \end{tikzpicture}
      \end{document}`
      Quello che ho fatto è ridurre la dimensione delle barre, perché mi sembravano un po’ appiccicate. E poi ho sostituito i [tt]pattern[/tt] che hai usato con dei riempimenti [tt]shade[/tt] (come alternativa si potrebbe usare [tt]fill[/tt] e quindi usare un unico colore. Ovviamente puoi cambiare i colori: ne hai a disposizione migliaia grazie al pacchetto [tt]xcolor[/tt]); mi pare che così il risultato sia più bello a vedersi e sia anche un pochino più “professionale” (metto le virgolette perché effettivamente potrebbe essere un parolone. Comunque è solo per dare l’idea). 😀

      Ciao,
      Marco.

    • #82427
      Up
      0
      Down
      ::

      Marco87″ post=81756Quello che ho fatto è ridurre la dimensione delle barre, perché mi sembravano un po’ appiccicate. E poi ho sostituito i [tt]pattern[/tt] che hai usato con dei riempimenti [tt]shade[/tt] (come alternativa si potrebbe usare [tt]fill[/tt] e quindi usare un unico colore. Ovviamente puoi cambiare i colori: ne hai a disposizione migliaia grazie al pacchetto [tt]xcolor[/tt]); mi pare che così il risultato sia più bello a vedersi e sia anche un pochino più “professionale” (metto le virgolette perché effettivamente potrebbe essere un parolone. Comunque è solo per dare l’idea).

      Grazie, molto bello con i colori sfumati, devo ammettere che la scelta dei miei pattern era stata sottesa da puro divertimento al femminile 😳

      Anche la soluzione per inserire il codice è perfetta, era proprio quello di cui avevo bisogno!

      Avrei solo due altri problemi nel seguente istogramma:

      `\documentclass{standalone}
      \usepackage{pgfplots}
      %\pgfplotsset{width=7cm,compat=newest}
      \usetikzlibrary{patterns}
      \begin{document}
      \begin{tikzpicture}
      \begin{axis}[disabledatascaling,
      %width=\textwidth,
      ylabel=FI,
      xlabel=Sampling time,
      %ymin=0 ymax=1,
      title style={align=center},
      title={Time course – 2Exp},
      enlargelimits=0.30,
      symbolic x coords={$IRBCs$,$RBCs$},
      xtick=data, xtick pos=left,
      ymajorgrids=true,
      legend style={at={(0.5,-0.25)},
      anchor=north,legend columns=-1},
      ybar,
      %ymin=0,ymax=1,
      bar width=5pt,
      ]
      \addplot[top color=gray!15,
      bottom color=gray,
      draw=black]
      coordinates {($IRBCs$,0.11008) ($RBCs$,0.130727)};
      \addplot[top color=cyan!15,
      bottom color=cyan,
      draw=black]
      coordinates {($IRBCs$,0.135983) ($RBCs$,0.121855)};
      \addplot[top color=orange!15,
      bottom color=orange,
      draw=black]
      coordinates {($IRBCs$,0.128493) ($RBCs$,0.142063)};
      \addplot[top color=pink!15,
      bottom color=pink,
      draw=black]
      coordinates {($IRBCs$,0.13353) ($RBCs$,0.127449)};
      \legend{Control,qhs 12.5nM,qhs 25nM,qhs 50nM}
      \end{axis}
      \end{tikzpicture}
      \end{document}`

      1| Le due serie sono troppo distanziate fra loro, vorrei avvicinarle ma non so come!
      2| Come posso portare il testo a capo all’interno della legenda?

      Grazie del vostro tempo, Mari

    • #82428
      Up
      0
      Down
      ::


      Ciao Mari,

      MARILpuro divertimento al femminile

      Questa mi ha fatto ridere! 😉 😛

      Venendo ai tuoi problemi con [tt]pgfplots,[/tt] come prima parto dalla seconda domanda: basta inserire nelle opzioni [tt]legend columns=2[/tt] (o il numero che vuoi tu):
      `\documentclass{standalone}
      \usepackage{pgfplots}
      %\pgfplotsset{width=7cm,compat=newest}
      \usetikzlibrary{patterns}
      \begin{document}
      \begin{tikzpicture}
      \begin{axis}[disabledatascaling,
      legend columns=2,
      %width=\textwidth,
      ylabel=FI,
      xlabel=Sampling time,
      %ymin=0 ymax=1,
      title style={align=center},
      title={Time course – 2Exp},
      enlargelimits=0.30,
      symbolic x coords={$IRBCs$,$RBCs$},
      xtick=data, xtick pos=left,
      ymajorgrids=true,
      legend style={at={(0.5,-0.25)},
      anchor=north,legend columns=-1},
      ybar,
      %ymin=0,ymax=1,
      bar width=5pt,
      ]
      \addplot[top color=gray!15,
      bottom color=gray,
      draw=black]
      coordinates {($IRBCs$,0.11008) ($RBCs$,0.130727)};
      \addplot[top color=cyan!15,
      bottom color=cyan,
      draw=black]
      coordinates {($IRBCs$,0.135983) ($RBCs$,0.121855)};
      \addplot[top color=orange!15,
      bottom color=orange,
      draw=black]
      coordinates {($IRBCs$,0.128493) ($RBCs$,0.142063)};
      \addplot[top color=pink!15,
      bottom color=pink,
      draw=black]
      coordinates {($IRBCs$,0.13353) ($RBCs$,0.127449)};
      \legend{Control,qhs 12.5nM,qhs 25nM,qhs 50nM}

      \end{axis}
      \end{tikzpicture}
      \end{document}`

      Ciao e buona serata,
      Marco.

    • #82429
      Up
      0
      Down
      ::


      Ciao Mari,

      eccomi per la risposta alla prima domanda. Dunque, puoi fare così:
      `\documentclass{standalone}
      \usepackage{pgfplots}
      %\pgfplotsset{width=7cm,compat=newest}
      \usetikzlibrary{patterns}
      \begin{document}
      \begin{tikzpicture}
      \begin{axis}[disabledatascaling,
      legend columns=2,
      width=.5\textwidth,
      ylabel=FI,
      xlabel=Sampling time,
      %ymin=0 ymax=1,
      title style={align=center},
      title={Time course – 2Exp},
      enlargelimits=.8,
      symbolic x coords={$IRBCs$,$RBCs$},
      xtick=data, xtick pos=left,
      ymajorgrids=true,
      legend style={at={(0.5,-0.25)},
      anchor=north,legend columns=-1},
      ybar,
      %ymin=0,ymax=1,
      bar width=5pt,
      %bar shift=.7cm,
      ]
      \addplot[top color=gray!15,
      bottom color=gray,
      draw=black]
      coordinates {($IRBCs$,0.11008) ($RBCs$,0.130727)};
      \addplot[top color=cyan!15,
      bottom color=cyan,
      draw=black]
      coordinates {($IRBCs$,0.135983) ($RBCs$,0.121855)};
      \addplot[top color=orange!15,
      bottom color=orange,
      draw=black]
      coordinates {($IRBCs$,0.128493) ($RBCs$,0.142063)};
      \addplot[top color=pink!15,
      bottom color=pink,
      draw=black]
      coordinates {($IRBCs$,0.13353) ($RBCs$,0.127449)};
      \legend{Control,qhs 12.5nM,qhs 25nM,qhs 50nM}

      \end{axis}
      \end{tikzpicture}
      \end{document}`
      Più incrementi il valore di [tt]enlargelimits,[/tt] minore sarà la distanza tra le barre (fissata la larghezza [tt]width[/tt] del grafico, ovviamente). Io l’ho variato da [tt].3[/tt] a [tt].8[/tt] e come puoi notare questa distanza diminuisce. Varia a piacere i valori di [tt]width[/tt] e di [tt]enlargelimits[/tt] per ottenere il risultato che desideri.

      Ciao,
      Marco.

      P.S. Se trovo qualche altro metodo te lo farò sapere.

    • #82430
      Up
      0
      Down
      ::


      Ciao Marco,

      grazie, sei stato gentilissimo!

      buona serata

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

Go to top