Risolto] Problema etichetta grafico

  • Creatore
    Topic
  • #87676
    Up
    0
    Down
    ::


    Salve a tutti. Sto componendo un file dove ho la necessità di aggiungere dei grafici. Fin qui tutto bene, perché tra tikz e pgfplots vado alla grande, ma mi si presenta un problema su di un grafico. Ho la necessità di porre una etichetta sull’asse delle y in posizione y=0. Se compilo il file, questo mi dà come risultato che l’etichetta non viene stampata. Con un po’ di prove sono riuscito a capire che questo è dovuto all’impostazione axis lines=middle, che non mi fa stampare l’etichetta nel punto perché giustamente c’è l’asse delle ascisse. Come posso bypassare il problema? Non ho trovato alcuna opzione di pgfplots che lo forzasse a stampare l’etichetta. Di seguito vi riporto un estratto compilabile:
    `
    \documentclass

    {standalone}
    \usepackage{pgfplots}

    \begin{document}
    \begin{tikzpicture}[font=\scriptsize]
    \begin{axis}[width=5cm,domain=.5:3,xmin=0,ymin=-1,xmax=3.5,axis lines=middle,xlabel=$p$,ylabel=$\mu$,%
    ytick={0},xtick={1},ylabel style={above left},xlabel style={below right},xticklabel={$p_0=\SI{1}{\bar}$},%
    yticklabels={$\mu^\circ(T)$},xticklabel style={xshift=.5cm},yticklabel style={}]
    \addplot+[no marks,smooth]{ln(x)} node[sloped,above,pos=.5]{$T=\text{costante}$};
    \end{axis}
    \end{tikzpicture}
    \end{document}
    `

    Grazie per la vostra disponibilità. 😀

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


      Ho dimenticato il pacchetto siunitx tra quelli da caricare, ma tanto non è inerente al problema. Eliminate pure la etichetta sull’asse delle ascisse. 😉

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

        skevin93″ post=87140Salve a tutti. Sto componendo un file dove ho la necessità di aggiungere dei grafici. Fin qui tutto bene, perché tra tikz e pgfplots vado alla grande, ma mi si presenta un problema su di un grafico. Ho la necessità di porre una etichetta sull’asse delle y in posizione y=0. Se compilo il file, questo mi dà come risultato che l’etichetta non viene stampata. Con un po’ di prove sono riuscito a capire che questo è dovuto all’impostazione axis lines=middle, che non mi fa stampare l’etichetta nel punto perché giustamente c’è l’asse delle ascisse. Come posso bypassare il problema? Non ho trovato alcuna opzione di pgfplots che lo forzasse a stampare l’etichetta. Di seguito vi riporto un estratto compilabile:
        `
        \documentclass

        {standalone}
        \usepackage{pgfplots}

        \begin{document}
        \begin{tikzpicture}[font=\scriptsize]
        \begin{axis}[width=5cm,domain=.5:3,xmin=0,ymin=-1,xmax=3.5,axis lines=middle,xlabel=$p$,ylabel=$\mu$,%
        ytick={0},xtick={1},ylabel style={above left},xlabel style={below right},xticklabel={$p_0=\SI{1}{\bar}$},%
        yticklabels={$\mu^\circ(T)$},xticklabel style={xshift=.5cm},yticklabel style={}]
        \addplot+[no marks,smooth]{ln(x)} node[sloped,above,pos=.5]{$T=\text{costante}$};
        \end{axis}
        \end{tikzpicture}
        \end{document}
        `

        Grazie per la vostra disponibilità. 😀

        Ciao.

        Innanzi tutto ho riformattato il codice per renderlo più leggibile (è una regola importante quando il codice LaTeX si fa complesso):
        `\documentclass[margin=1pt]{standalone}

        \usepackage{pgfplots}
        \pgfplotsset{compat=1.8}

        \usepackage{siunitx}

        \begin{document}
        \begin{tikzpicture}[font=\scriptsize]
        \begin{axis}[%
        width=5cm,
        domain=.5:3,
        xmin=0,
        ymin=-1,
        xmax=3.5,
        axis lines=middle,
        xlabel=$p$,
        ylabel=$\mu$,
        ytick=0,
        xtick=1,
        ylabel style=above left,
        xlabel style=below right,
        xticklabel={$p_0=\SI{1}{\bar}$},
        yticklabels={$\mu^\circ(T)$},
        xticklabel style={xshift=.5cm},
        yticklabel style={},
        clip=false]

        \addplot+[no marks,smooth]
        {ln(x)} node[sloped,above,pos=.5]
        {$T=\:$costante};

        \node[anchor=east] at (axis cs:0,0){label};
        \end{axis}
        \end{tikzpicture}
        \end{document}`

        Come vedi l’opzione chiave è “clip=false”. Infatti di default pgfplots taglia il disegno relativamente alla tela del grafico.
        L’etichetta “label” è apposta con un comando ordinario di TikZ con l’unica particolarità che le coordinate sono espresse nel sistema “axis cs” — si tratta quindi dell’origine.

        Naturalmente, quello di cui avevi bisogno stava scritto nella documentazione. In particolare, ti consiglio di leggere l’articolo sull’argomento sul numero 12 di ArsTeXnica di due noti autori… /wp-content/uploads/joomla-images/ArsTeXnica/AT012/grafici-pgfplots.pdf …
        Happy pgfplots!
        R.

      • #87679
        Up
        0
        Down
        ::


        Anzitutto grazie per la tua tempestiva risposta. Il codice funziona alla perfezione 8) . Grazie anche per la guida, mi mancava. La aggiungerò al mio già nutrito archivio di guide latex e ci darò un occhiata. 🙂

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

          skevin93″ post=87144Anzitutto grazie per la tua tempestiva risposta. Il codice funziona alla perfezione 8) . Grazie anche per la guida, mi mancava. La aggiungerò al mio già nutrito archivio di guide latex e ci darò un occhiata. 🙂

          Prego.
          Aggiungo solo un epiteto.
          All’inizio avevo anch’io una cartella piena di guide, ma poi ho capito che le guide dei pacchetti si possono aprire al volo da terminale con il comando (sostituire nomepacchetto con il nome effettivo, per esempio appunto pgfplots):
          `$ texdoc nomepacchetto`
          😉
          R.

        • #87681
          Up
          0
          Down
          ::


          Un piccolissimo apporto alla discussione 🙂

          Con pgfplots, è anche possibile in casi particolari evitare la sintassi [tt]axis cs:[/tt] e questo è uno di quei casi. Infatti, l’origine del grafico è un’ancora speciale, accessibile con [tt].origin[/tt] a patto di specificare nome al grafico. Ecco quindi, che il codice di Roberto diventerebbe: `
          \documentclass[margin=1pt]{standalone}

          \usepackage{pgfplots}
          \pgfplotsset{compat=1.8}

          \usepackage{siunitx}

          \begin{document}
          \begin{tikzpicture}[font=\scriptsize]
          \begin{axis}[%
          width=5cm,
          domain=.5:3,
          xmin=0,
          ymin=-1,
          xmax=3.5,
          axis lines=middle,
          xlabel=$p$,
          ylabel=$\mu$,
          ytick=0,
          xtick=1,
          ylabel style=above left,
          xlabel style=below right,
          xticklabel={$p_0=\SI{1}{\bar}$},
          yticklabels={$\mu^\circ(T)$},
          xticklabel style={xshift=.5cm},
          yticklabel style={},
          clip=false,
          name=my plot, % aggiungo il nome
          ]

          \addplot+[no marks,smooth]
          {ln(x)} node[sloped,above,pos=.5]
          {$T=\:$costante};
          \end{axis}
          \node[anchor=east] at (my plot.origin) {label};% accedo all'ancora speciale
          \end{tikzpicture}
          \end{document}
          `

          Ciao
          Claudio

        • #87682
          Up
          0
          Down
          ::


          Per robitex: quella cartella non contiene le guide dei pacchetti, che giustamente sono comodamente accessibili con texdoc, ma guide come “L’arte di scrivere con latex” o altre da cui prendo spunto ;). Comunque grazie per il consiglio.

          Per cfiandra: grazie anche a te per l’ulteriore metodo di risoluzione :D. E’ sempre utile scoprire nuove vie per risolvere lo stesso problema.

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

      Go to top