Pgfplots: utilizzare simbolo % nell’asse delle ascisse

  • Creatore
    Topic
  • #59916
    Up
    0
    Down
    ::


    Buongiorno a tutti,
    innanzitutto mi presento: mi chiamo Alessandro e sono un felice utente (base) Latex da alcuni anni.
    In questo periodo sono alle prese con la tesi e tutte le guide ed i post sul forum sono stati preziosi per risolvere i problemi che si sono presentati.
    Non riesco a correggere l’errore che ottengo compilando questo codice:

    `
    \begin{figure}[!htbp]
    \centering
    \begin{tikzpicture}
    \begin{axis}[
    symbolic x coords={control, 3\%, 6\%, 9\%, 12\%, 15\%},
    xtick=data,
    tick label style={
    /pgf/number format/1000 sep=},
    ylabel=\textbf{n. of strains},
    xlabel=\textbf{ethanol \% (v/v)},
    nodes near coords,
    point meta=y,
    legend style={at={(0.5,-0.15)},
    anchor=north,legend columns=-1},
    ybar,
    bar width=15pt,
    ]
    \addplot %positive
    coordinates {(control,87) (3\%,76) (6\%,58) (9\%,43) (12\%,19) (15\%,13)};
    \addplot %negative
    coordinates {(control,0) (3\%,11) (6\%,29) (9\%,44) (12\%,68) (15\%,74)};

    \legend{positive, negative}
    \end{axis}
    \end{tikzpicture}
    \caption{Growth of yeast strain on lab media containing ethanol. The results are expressed as number of strain able (positive) or not able (negative) to grow.}
    \label{gra:ethanol}
    \end{figure}
    `

    Durante la compilazione, per tutti i %, ottengo:
    `

    ! Missing \endcsname inserted.

    \%
    l.21 …1) (6\%,29) (9\%,44) (12\%,68) (15\%,74)};
    `

    Premendo invio a tutti gli errori il grafico viene compilato comunque correttamente.
    Sapreste aiutarmi?
    Grazie

Visualizzazione 3 filoni di risposte
  • Autore
    Risposte
    • #59917
      admin
      Amministratore del forum
        Up
        0
        Down
        ::

        Buongiorno a tutti,
        innanzitutto mi presento: mi chiamo Alessandro e sono un felice utente (base) Latex da alcuni anni.
        In questo periodo sono alle prese con la tesi e tutte le guide ed i post sul forum sono stati preziosi per risolvere i problemi che si sono presentati.
        Non riesco a correggere l’errore che ottengo compilando questo codice:

        `
        \begin{figure}[!htbp]
        \centering
        \begin{tikzpicture}
        \begin{axis}[
        symbolic x coords={control, 3\%, 6\%, 9\%, 12\%, 15\%},
        xtick=data,
        tick label style={
        /pgf/number format/1000 sep=},
        ylabel=\textbf{n. of strains},
        xlabel=\textbf{ethanol \% (v/v)},
        nodes near coords,
        point meta=y,
        legend style={at={(0.5,-0.15)},
        anchor=north,legend columns=-1},
        ybar,
        bar width=15pt,
        ]
        \addplot %positive
        coordinates {(control,87) (3\%,76) (6\%,58) (9\%,43) (12\%,19) (15\%,13)};
        \addplot %negative
        coordinates {(control,0) (3\%,11) (6\%,29) (9\%,44) (12\%,68) (15\%,74)};

        \legend{positive, negative}
        \end{axis}
        \end{tikzpicture}
        \caption{Growth of yeast strain on lab media containing ethanol. The results are expressed as number of strain able (positive) or not able (negative) to grow.}
        \label{gra:ethanol}
        \end{figure}
        `

        Durante la compilazione, per tutti i %, ottengo:
        `

        ! Missing \endcsname inserted.

        \%
        l.21 …1) (6\%,29) (9\%,44) (12\%,68) (15\%,74)};
        `

        Premendo invio a tutti gli errori il grafico viene compilato comunque correttamente.
        Sapreste aiutarmi?
        Grazie

        Prova questo
        `\begin{figure}
        \centering
        \begin{tikzpicture}
        \begin{axis}[
        symbolic x coords={control, 3, 6, 9, 12, 15},
        xticklabels={control,3\%,6\%,9\%,12\%,15\%},
        xtick=data,
        tick label style={
        /pgf/number format/1000 sep=},
        ylabel=\textbf{n. of strains},
        xlabel=\textbf{ethanol \% (v/v)},
        nodes near coords,
        point meta=y,
        legend style={at={(0.5,-0.2)},
        anchor=north,
        legend columns=-1},
        ybar,
        bar width=15pt,
        ]
        \addplot %positive
        coordinates {(control,87) (3,76) (6,58) (9,43) (12,19) (15,13)};
        \addplot %negative
        coordinates {(control,0) (3,11) (6,29) (9,44) (12,68) (15,74)};

        \legend{positive, negative}
        \end{axis}
        \end{tikzpicture}
        \caption{Growth of yeast strain on lab media containing ethanol. The results are expressed as number of strain able (positive) or not able (negative) to grow.}
        \label{gra:ethanol}`
        Ciao
        Orlando

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

          Buongiorno a tutti,
          innanzitutto mi presento: mi chiamo Alessandro e sono un felice utente (base) Latex da alcuni anni.
          In questo periodo sono alle prese con la tesi e tutte le guide ed i post sul forum sono stati preziosi per risolvere i problemi che si sono presentati.
          Non riesco a correggere l’errore che ottengo compilando questo codice:

          `
          \begin{figure}[!htbp]
          \centering
          \begin{tikzpicture}
          \begin{axis}[
          symbolic x coords={control, 3\%, 6\%, 9\%, 12\%, 15\%},
          xtick=data,
          tick label style={
          /pgf/number format/1000 sep=},
          ylabel=\textbf{n. of strains},
          xlabel=\textbf{ethanol \% (v/v)},
          nodes near coords,
          point meta=y,
          legend style={at={(0.5,-0.15)},
          anchor=north,legend columns=-1},
          ybar,
          bar width=15pt,
          ]
          \addplot %positive
          coordinates {(control,87) (3\%,76) (6\%,58) (9\%,43) (12\%,19) (15\%,13)};
          \addplot %negative
          coordinates {(control,0) (3\%,11) (6\%,29) (9\%,44) (12\%,68) (15\%,74)};

          \legend{positive, negative}
          \end{axis}
          \end{tikzpicture}
          \caption{Growth of yeast strain on lab media containing ethanol. The results are expressed as number of strain able (positive) or not able (negative) to grow.}
          \label{gra:ethanol}
          \end{figure}
          `

          Durante la compilazione, per tutti i %, ottengo:
          `

          ! Missing \endcsname inserted.

          \%
          l.21 …1) (6\%,29) (9\%,44) (12\%,68) (15\%,74)};
          `

          Premendo invio a tutti gli errori il grafico viene compilato comunque correttamente.
          Sapreste aiutarmi?
          Grazie

          (ansys mi hai anticipato mentre scrivevo il msg…)
          Evidentemente pgfplots non riesce a gestire token particolari nel dizionario.
          Togli i simboli di percentuale ed eventualmente inseriscili nei tick di etichetta della asse.
          Inserisci quindi tra le opzioni dell’ambiente axis la chiave xticklabels per indicare le etichette che desideri:

          `\documentclass[a4paper]{article}
          \usepackage{lmodern}
          \usepackage{pgfplots}

          \begin{document}
          \begin{tikzpicture}
          \begin{axis}[
          ymin=0, ymax=100,
          symbolic x coords={ctrl,3,6,9,12,15},
          xticklabels={control,3\%,6\%,9\%,12\%,15\%},
          xtick=data,
          tick label style={
          /pgf/number format/1000 sep=},
          ylabel=\textbf{n. of strains},
          xlabel=\textbf{ethanol \% (v/v)},
          nodes near coords,
          point meta=y,
          legend style={at={(0.5,-0.20)},
          anchor=north,legend columns=-1},
          ybar,
          bar width=15pt
          ]
          \addplot %positive
          coordinates {(ctrl,87) (3,76) (6,58) (9,43) (12,19) (15,13)};
          \addplot %negative
          coordinates {(ctrl,0) (3,11) (6,29) (9,44) (12,68) (15,74)};

          \legend{positive, negative}
          \end{axis}
          \end{tikzpicture}

          \end{document}`

          Il grafico a barre non è a mio avviso indicato. Forse una bella linea fa comprendere meglio l’andamento complementare dei due fenomeni:

          `\documentclass[a4paper]{article}
          \usepackage{lmodern}
          \usepackage{pgfplots}

          \begin{document}
          \begin{tikzpicture}
          \begin{axis}[
          xmajorgrids,
          ymin=0, ymax=100,
          xtick={0,3,6,9,12,15},
          xticklabels={control,3\%,6\%,9\%,12\%,15\%},
          ylabel=\textbf{N. of strains},
          xlabel=\textbf{Ethanol (v/v) (\%)},
          nodes near coords,
          point meta=explicit symbolic,
          legend style={at={(0.5,-0.20)},
          anchor=north,legend columns=-1},
          ]

          %positive
          \addplot+[nodes near coords align=below] coordinates
          {(0,87) [87\%]
          (3,76) [3\%]
          (6,58) [6\%]
          (9,43) [9\%]
          (12,19) [12\%]
          (15,13) [15\%]};

          %negative
          \addplot coordinates
          {(0,0) [0\%]
          (3,11) [3\%]
          (6,29) [6\%]
          (9,44) [9\%]
          (12,68)[12\%]
          (15,74)[15\%]};

          \legend{positive, negative}
          \end{axis}
          \end{tikzpicture}

          \end{document}`
          Buon lavoro e benvenuto sul forum!!!
          R.

        • #59919
          Up
          0
          Down
          ::


          Grazie ad entrambi, ora compila senza errori. 😀

          grazie del suggerimento, in verità con il professore avevamo scelto un grafico di tipo stacked bar perché faceva vedere l’aumentare dei negativi e il diminuire dei positivi. Il problema è che pgfplots somma le ordinate, per cui il valore della barra superiore è sempre 87 (nel secondo caso ad esempio dovrebbe essere 11, se si mette in valore di crescita negativo in cima). Non sono riuscito a risolvere questo problema per cui ho ovviato per le barre affiancate. 🙄

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

            Grazie ad entrambi, ora compila senza errori. 😀

            robitex”
            Il grafico a barre non è a mio avviso indicato. Forse una bella linea fa comprendere meglio l’andamento complementare dei due fenomeni:
            [/quote

            grazie del suggerimento, in verità con il professore avevamo scelto un grafico di tipo stacked bar perché faceva vedere l’aumentare dei negativi e il diminuire dei positivi. Il problema è che pgfplots somma le ordinate, per cui il valore della barra superiore è sempre 87 (nel secondo caso ad esempio dovrebbe essere 11, se si mette in valore di crescita negativo in cima). Non sono riuscito a risolvere questo problema per cui ho ovviato per le barre affiancate. 🙄

            Scusa ma il codice che ti ho postato fa esattamente il grafico delle due serie di valori evitando il brutto affiancamento delle barre verticali delle due serie per ciascun valore.

            Prova a compilarlo!!! Non ti serve un stacked plot, ma un plottaggio normale.
            Ciao.

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

        Go to top