Istogrammi con tikzpicture

  • Creatore
    Topic
  • #112323
    Up
    0
    Down
    ::


    Buonasera,
    ho un problema con la realizzazione di un istogramma. In realtà vorrei inserire 3 serie di istogrammi in un unico grafico. Il problema è che vorrei inserire una legenda in alto ad ogni serie di isotgrammi, col relativo titolo (e non un’unica legenda come nell’immagine allegata), ed in basso (sull’asse x) vorrei personalizzare le etichette.
    `\begin{tikzpicture}
    \begin{axis} [
    ybar,ymin=0,ymax=0.2,xtick=data,
    ymajorgrids=true, xlabel=anni,
    symbolic x coords={$0$,
    $25$,$50$,$75$,$100$,$125$,$150$,$175$,$200$,$225$,$250$,
    $275$,$300$,$325$,$350$,$375$,$400$,$425$},
    width=10cm,height=10cm]
    \addplot
    [ybar interval,fill=purple,
    draw=black] coordinates
    {($0$, 0.10)($25$, 0.12)($50$, 0.13)
    ($75$, 0.14)($100$, 0.15)($125$, 0)};

    \addplot
    [ybar interval,fill=teal,
    draw=black] coordinates
    {($125$,0)($150$,0.10)($175$,0.09)($200$,0.15)($225$,0.11)($250$,0.09)($275$,00)};

    \addplot
    [ybar interval,fill=olive,
    draw=black] coordinates
    {($275$,0.10)($300$,0.10)($325$,0.12)($350$,0.15)($375$,0.09)($400$,0.11)($425$,0.0)};
    \legend{$\gamma_{s}$,$\gamma_{tot}$,$N/N_{cr}$}
    \end{axis}
    \end{tikzpicture}`

    Non so perchè ma dopo la compilazione, vengono inseriti solo i valori sull’asse x della prima serie di istogrammi (il primo \addplot per intenderci), mentre sotto le altre non compare nulla, come potete vedere nell’immagine allegata.

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


      Penso di aver risolto consultando la documentazione di pgfplots

      `\begin{tikzpicture}
      \begin{axis}[
      ybar,
      enlargelimits=0.15,
      legend style={at={(0.5,-0.15)},
      anchor=north,legend columns=-1},
      symbolic x coords={$\gamma_{s}$,$\gamma_{tot}$,$N/N_{cr}$},
      xtick=data,
      nodes near coords,
      nodes near coords align={vertical},
      width=11cm, height=8cm
      ]
      \addplot[fill=blue] coordinates {($\gamma_{s}$,0.1) ($\gamma_{tot}$,0.5) ($N/N_{cr}$,0.2)};
      \addplot [fill=olive]coordinates {($\gamma_{s}$,0.12) ($\gamma_{tot}$,0.4) ($N/N_{cr}$,0.2)};
      \addplot [fill=brown]coordinates {($\gamma_{s}$,0.09) ($\gamma_{tot}$,0.6) ($N/N_{cr}$,0.18)};
      \addplot [fill=purple]coordinates {($\gamma_{s}$,0.13) ($\gamma_{tot}$,0.7) ($N/N_{cr}$,0.22)};
      \addplot [fill=red]coordinates {($\gamma_{s}$,0.12) ($\gamma_{tot}$,0.55) ($N/N_{cr}$,0.21)};
      \legend{t=0 anni, t=10 anni, t=50 anni, t=75 anni, t=100 anni}
      \end{axis}
      \end{tikzpicture}`

      L’unico dubbio riguarda: come ottenere i valori sopra ogni barra, ruotati di 90°?? Questo per problemi di spazio.

    • #112325
      robitex
      Amministratore del forum
        Up
        0
        Down
        ::


        Ciao, eccomi qua.
        mi son divertito con il tuo grafico. Il risultato lo vedi qua sotto.
        Come vedi ho cambiato il blue della prima barra in orange e cambiato il colore dell’ultima.
        I colori penso che adesso siano più ragionevoli.

        Poi ho cambiato la legenda sistemandola in verticale all’interno del grafico.
        Ho anche modificato le etichette numeriche sulle barre che rappresentano l’effettivo valore perché siano ruotate.
        Puoi fare altre regolazioni, per esempio cambiare l’angolo di rotazione di questi numeri a 80°. La leggera inclinazione rende il grafico un po’ più dinamico!
        Rimane da valutare se inserire o meno la rigatura orizzontale con spaziatura 0.20 (opzione ymajorgrids), e se eliminare il contorno della legenda.

        `\documentclass[tikz]{standalone}
        \usepackage{pgfplots}
        \usepackage{graphicx}
        \pgfplotsset{compat=1.15}

        \begin{document}
        \begin{tikzpicture}
        \begin{axis}[
        ybar,
        ymin=0,ymax=0.80,
        enlarge x limits=0.25,
        legend style={at={(0.5,-0.15)},
        anchor=north,legend columns=-1},
        symbolic x coords={$\gamma_{s}$,$\gamma_{tot}$,$N/N_{cr}$},
        xtick=data,
        nodes near coords={
        \rotatebox{90}{%
        \small
        \pgfmathprintnumber[fixed,precision=2,zerofill]\pgfplotspointmeta
        }
        },
        nodes near coords align={vertical},
        width=10cm,
        height=8cm,
        legend style={
        legend pos=north east,
        legend columns=1,
        }
        ]
        \addplot[fill=orange] coordinates
        {($\gamma_{s}$,0.1) ($\gamma_{tot}$,0.5) ($N/N_{cr}$,0.2)};

        \addplot [fill=olive] coordinates
        {($\gamma_{s}$,0.12) ($\gamma_{tot}$,0.4) ($N/N_{cr}$,0.2)};

        \addplot [fill=brown] coordinates
        {($\gamma_{s}$,0.09) ($\gamma_{tot}$,0.6) ($N/N_{cr}$,0.18)};

        \addplot [fill=purple] coordinates
        {($\gamma_{s}$,0.13) ($\gamma_{tot}$,0.7) ($N/N_{cr}$,0.22)};

        \addplot [fill=red!50!black] coordinates
        {($\gamma_{s}$,0.12) ($\gamma_{tot}$,0.55) ($N/N_{cr}$,0.21)};

        \legend{
        0 anni,
        10 anni,
        50 anni,
        75 anni,
        100 anni
        }
        \end{axis}
        \end{tikzpicture}
        \end{document}
        `

        [attachment=2007]r.pdf[/attachment]

        Alla prossima.
        R.

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


        fantastico 😀 ti ringrazio

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

    Go to top