pgfplots TeX capacity exceeded

  • Creatore
    Topic
  • #93337
    Up
    0
    Down
    ::


    Ciao a tutti!
    sto cercando di plottare dei grafici con tikz ma ho problemi di memoria, in particolare l’errore è:
    `
    […] TeX capacity exceeded, sorry [main memory size=5000000].
    `

    Questo è il codice:
    `
    \documentclass[a4paper,10pt,twocolumn,conference]{IEEEtran}

    \usepackage[utf8]{inputenc}
    \usepackage[T1]{fontenc}

    \usepackage{cite,subfigure}
    \usepackage{graphicx}
    \usepackage{color}
    \usepackage{amsmath,amsfonts,amssymb,bm,latexsym,txfonts,units}
    %\usepackage[amssymb,italian,mediumspace,cdot]{SIunits}
    \usepackage[binary-units]{siunitx}
    \usepackage{booktabs}
    \usepackage{dcolumn}
    \usepackage{multicol}
    \usepackage{multirow}

    \usepackage{pgfplots}
    \pgfplotsset{/pgf/number format/use comma,compat=newest}
    \usepackage{circuitikz}
    \usepackage{xcolor}

    \title{prova}

    \author{%
    warcomeb
    }

    \begin{document}

    \maketitle
    \pagestyle{empty}

    \begin{figure}
    \centering
    \begin{tikzpicture}
    \begin{axis}[%
    ymax=60000,
    xlabel=time,%
    ylabel=ADC value,
    % legend style={anchor=north,at={(0.5,0.99)},draw=none},
    % legend style={cells={anchor=east},legend pos=outer north east},
    % legend columns=3,
    grid=major,
    % width=10cm,%
    % height=6cm%
    ]
    \addplot [red,thick] table [x expr=\coordindex,y=AccTwo] {100mhz_20s_001_2.txt};
    % \addplot [green,thick] table[x expr=\coordindex,y=Acc2] {plots/100mhz_20s_001.txt_2};

    % \legend{classic,nogeminate,nosemivocali}
    \end{axis}
    \end{tikzpicture}
    \caption{Test with sinusoidal signals at particular frequency.}
    \label{fig:sintest}
    \end{figure}

    \end{document}
    `

    mentre il file da cui caricare i dati è riportato qui: esempio dataset

    ho provato anche ad usare l’external come descritto qui:esempio external ma sembra che sia incompatibile con qualcosa che uso per fare le altre immagini dell’articolo sempre in tikz.

    Mi potete aiutare?

    Grazie
    Marco

Visualizzazione 16 filoni di risposte
  • Autore
    Risposte
    • #93338
      Up
      0
      Down
      ::

      warcomeb” post=92955Ciao a tutti!
      sto cercando di plottare dei grafici con tikz ma ho problemi di memoria, in particolare l’errore è:
      `
      […] TeX capacity exceeded, sorry [main memory size=5000000].
      `

      Questo è il codice:
      `
      \documentclass[a4paper,10pt,twocolumn,conference]{IEEEtran}

      \usepackage[utf8]{inputenc}
      \usepackage[T1]{fontenc}

      \usepackage{cite,subfigure}
      \usepackage{graphicx}
      \usepackage{color}
      \usepackage{amsmath,amsfonts,amssymb,bm,latexsym,txfonts,units}
      %\usepackage[amssymb,italian,mediumspace,cdot]{SIunits}
      \usepackage[binary-units]{siunitx}
      \usepackage{booktabs}
      \usepackage{dcolumn}
      \usepackage{multicol}
      \usepackage{multirow}

      \usepackage{pgfplots}
      \pgfplotsset{/pgf/number format/use comma,compat=newest}
      \usepackage{circuitikz}
      \usepackage{xcolor}

      \title{prova}

      \author{%
      warcomeb
      }

      \begin{document}

      \maketitle
      \pagestyle{empty}

      \begin{figure}
      \centering
      \begin{tikzpicture}
      \begin{axis}[%
      ymax=60000,
      xlabel=time,%
      ylabel=ADC value,
      % legend style={anchor=north,at={(0.5,0.99)},draw=none},
      % legend style={cells={anchor=east},legend pos=outer north east},
      % legend columns=3,
      grid=major,
      % width=10cm,%
      % height=6cm%
      ]
      \addplot [red,thick] table [x expr=\coordindex,y=AccTwo] {100mhz_20s_001_2.txt};
      % \addplot [green,thick] table[x expr=\coordindex,y=Acc2] {plots/100mhz_20s_001.txt_2};

      % \legend{classic,nogeminate,nosemivocali}
      \end{axis}
      \end{tikzpicture}
      \caption{Test with sinusoidal signals at particular frequency.}
      \label{fig:sintest}
      \end{figure}

      \end{document}
      `

      mentre il file da cui caricare i dati è riportato qui: esempio dataset

      ho provato anche ad usare l’external come descritto qui:esempio external ma sembra che sia incompatibile con qualcosa che uso per fare le altre immagini dell’articolo sempre in tikz.

      Mi potete aiutare?

      Grazie
      Marco

      Quello che puoi fare è compilare a parte il grafico con standlone (usa lualatex) e includerò nel paper con [tt]\oncludegraphocs[/tt].

      Ovviamente nel documento a parte usa gli stessi font di IEEE.

      Ciao
      Claudio

    • #93339
      Up
      0
      Down
      ::


      Ho messo il disegno in un file a parte con questo codice:
      `
      \documentclass{standalone}

      \usepackage{pgfplots}
      \pgfplotsset{/pgf/number format/use comma,compat=newest}

      \begin{document}

      \begin{tikzpicture}
      \begin{axis}[%
      % ymax=60000,
      xlabel=time,%
      ylabel=ADC value,
      grid=major,
      % ]
      \addplot [red,thick] table [x expr=\coordindex,y=AccTwo] {100mhz_20s_001_1.txt};
      \addplot [green,thick] table [x expr=\coordindex,y=AccTwo] {100mhz_20s_001_1.txt};

      \end{axis}
      \end{tikzpicture}

      \end{document}
      `

      ho lanciato `lualatex sin-100m.tex`
      e il tutto si è piantato, senza dare più segni di vita, lasciando questo ultimo messaggio:

      `Package pgfplots notification 'compat/show suggested version=true': document has
      been generated with the most recent feature set (\pgfplotsset{compat=1.8}).
      `

      help me… ne ho parecchi di grafici da mettere dentro!!

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


        Insomma, quell’esempio non è compilabile perché mancano i file di testo con i numeri, pertanto non è possibile rendersi conto della precisione e del tipo di grafico.
        Penso che dovresti provare a regolare la distanza dei punti sulle ascisse, ma quel ymax=60000 mi preoccupa un po’.
        R.

      • #93341
        Up
        0
        Down
        ::


        ho allegato il file con i dati nel primo messaggio:

        mentre il file da cui caricare i dati è riportato qui: esempio dataset

        Perché ymax=60000 è un problema?? i dati arrivano a quel valore!

        Grazie
        Marco

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

          warcomeb” post=92959ho allegato il file con i dati nel primo messaggio:

          mentre il file da cui caricare i dati è riportato qui: esempio dataset

          Perché ymax=60000 è un problema?? i dati arrivano a quel valore!

          Grazie
          Marco

          Paura eh…. 🙂
          Ora compilo anch’io… poi ti dico.
          R.

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


            Dunque, ho fatto le seguenti modifiche:
            1 – invece che compat=newest ho messo compat=1.10 (come consiglia il manuale) metti la tua ultima versione;
            2 – ho plottato il grafico come file e non come table;
            3 – ho leggermente corretto le etichette del grafico;
            4 – ho messo il carattere # come primo nella prima riga all’interno del file dei dati che ho chiamato iii.txt;
            5 – ho compilato con LuaLaTeX.
            Ecco il sorgente:
            `
            \documentclass{standalone}
            \usepackage{pgfplots}
            \pgfplotsset{/pgf/number format/use comma,compat=1.10}

            \begin{document}
            \begin{tikzpicture}
            \begin{axis}[
            xlabel=Time,
            ylabel=\textsc{adc} value,
            grid=major
            ]
            \addplot [red, thick] file [x expr=\coordindex, y={AccTwo}]
            {iii.txt};
            \end{axis}
            \end{tikzpicture}
            \end{document}`

            Ecco il risultato:
            [attachment=964]rrr.pdf[/attachment]

            Ho superato la memoria se invece compialvo con pdflatex.
            Ricordati di impostare il font nei file con la classe standalone in modo che corrispondano coni il documento principale.
            R.

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


            Ho provato a compilarlo e mettendo compat=1.4 è andato a buon fine tranne per una cosa:
            `
            Package pgfplots notification 'compat/show suggested version=true': you might be
            nefit from \pgfplotsset{compat=1.8} (current compat level: 1.4).

            ! Package pgfkeys Error: I do not know the key '/tikz/x expr' and I am going to
            ignore it. Perhaps you misspelled it.
            `

            io pensavo che `x expr=\coordindex` si potesse usare come tick, cioè dato che i miei campioni sono 20000 lui avrebbe messo come asse delle x da 0 a 20000 (infatti il grafico dovrebbe essere un’onda quadra!). Che cosa sbaglio?

            Grazie
            Marco

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


              Be’ non è una cosa tanto secondaria…
              Lavora con il numero di versione che hai tu, ma evidentemente deve essere abbastanza recente.
              Comunque nel file che ti ho postato non mi sembra che venga fuori un’onda quadra. O si?
              R.

            • #93346
              Up
              0
              Down
              ::


              Se io lo plottto con gnuplot ho un’onda quadra!

              [attachment=965]plot.pdf[/attachment]

              a me viene lo stesso grafico che viene a te con latex, ma con gnuplot viene fuori la forma giusta!

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


              Comunque, non mi spiego perché devo usare lualatex per plottare questi grafici! 😕 😕

            • #93348
              Up
              0
              Down
              ::


              Io non lo compilerei con una versione così vecchia di pgfplots come la 1.4; cerca di utilizzare versioni recenti, tanto più che, compilando a parte, non devi inviarlo alla conferenza (con i soliti problemi di compatibilità).

              LuaLaTeX ti evita tutti quei fastidiosi problemi di memoria. Un grafico con i dati che hai, pdflatex non lo compilerebbe mai (forse anche estendendo manualmente la memoria non ce la farebbe).

              Ciao
              Claudio

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

                warcomeb” post=92968Se io lo plottto con gnuplot ho un’onda quadra!

                [attachment=965]plot.pdf[/attachment]

                a me viene lo stesso grafico che viene a te con latex, ma con gnuplot viene fuori la forma giusta!

                Semplicemente i due grafici non sono uguali.
                Infatti, a pgfplots non dici di disegnare il grafico di (prima e seconda colonna nel file dati) ma di , grazie all’opzione x expr=\coordindex.
                Quindi grafica la funzione (o messo numeri a caso ma nello stesso intevallo di valori plausibile):
                1, 26212
                2, 26256
                ecc

                Forse ti sarà utile sapere che pgfplots semplicemente unisce i punti con una linea (spzzata o continua) quindi lo stesso grafico di onda quadra si otterrebbe “ripulendo” il fiel dalla maggior parte delle coordinate che in realtà si sovrappongono e/o stanno sulla stesso segmento.
                R.

              • #93350
                Up
                0
                Down
                ::


                Sinceramente era proprio quello che volevo: usare il contatore per l’asse delle x, e la prima colonna del file come asse delle y. Le due colonne all’interno del file rappresentano due grafici diversi! Ho risolto aggiungendo una terza colonna con numeri che vanno da 1 a 20000.

                Una domandina off-topic: nel grafico appare la scritta 10^4 anche se io ho cambiato le label dei tick sulle x:
                `
                \documentclass{standalone}

                \usepackage{pgfplots}
                \pgfplotsset{/pgf/number format/use comma,compat=1.8}

                \begin{document}

                \begin{tikzpicture}
                \begin{axis}[
                xmin = 0,
                xmax = 20000,
                ymin = 0,
                xtick={0,5000,10000,15000,20000},
                xticklabels={0,5,10,15,20},
                xlabel=Time (s),
                ylabel=\textsc{adc} value,
                grid=major
                ]
                \addplot [red, thick] file [x=num,y=AccTwo]
                {100mhz_20s_002_1.txt};
                \addplot [green, thick] file [x=num,y=AccTwo]
                {100mhz_20s_002_2.txt};
                \legend{Node 1,Node 2}
                \end{axis}
                \end{tikzpicture}
                \end{document}
                `

                è possibile toglierlo?

                Grazie
                Marco

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

                  warcomeb” post=92980Sinceramente era proprio quello che volevo: usare il contatore per l’asse delle x, e la prima colonna del file come asse delle y. Le due colonne all’interno del file rappresentano due grafici diversi! Ho risolto aggiungendo una terza colonna con numeri che vanno da 1 a 20000.

                  Una domandina off-topic: nel grafico appare la scritta 10^4 anche se io ho cambiato le label dei tick sulle x:
                  `
                  \documentclass{standalone}

                  \usepackage{pgfplots}
                  \pgfplotsset{/pgf/number format/use comma,compat=1.8}

                  \begin{document}

                  \begin{tikzpicture}
                  \begin{axis}[
                  xmin = 0,
                  xmax = 20000,
                  ymin = 0,
                  xtick={0,5000,10000,15000,20000},
                  xticklabels={0,5,10,15,20},
                  xlabel=Time (s),
                  ylabel=\textsc{adc} value,
                  grid=major
                  ]
                  \addplot [red, thick] file [x=num,y=AccTwo]
                  {100mhz_20s_002_1.txt};
                  \addplot [green, thick] file [x=num,y=AccTwo]
                  {100mhz_20s_002_2.txt};
                  \legend{Node 1,Node 2}
                  \end{axis}
                  \end{tikzpicture}
                  \end{document}
                  `

                  è possibile toglierlo?

                  Grazie
                  Marco

                  Si d’accordo ma poi devi fare lo stesso anche con gnuplot!

                  Per la domandina ti indirizzerei verso questo articolo 😉 (figura 12)
                  /wp-content/uploads/joomla-images/ArsTeXnica/AT012/grafici-pgfplots.pdf
                  di due notissimi ed autorevolissimi Autori…
                  oltre che al manuale di pgfplots
                  dai da terminale il comando
                  `$ texdoc pgfplots`
                  e comparirà a video…
                  R.

                • #93352
                  Up
                  0
                  Down
                  ::

                  robitex” post=92981

                  Sinceramente era proprio quello che volevo: usare il contatore per l’asse delle x, e la prima colonna del file come asse delle y. Le due colonne all’interno del file rappresentano due grafici diversi! Ho risolto aggiungendo una terza colonna con numeri che vanno da 1 a 20000.

                  Una domandina off-topic: nel grafico appare la scritta 10^4 anche se io ho cambiato le label dei tick sulle x:
                  `
                  \documentclass{standalone}

                  \usepackage{pgfplots}
                  \pgfplotsset{/pgf/number format/use comma,compat=1.8}

                  \begin{document}

                  \begin{tikzpicture}
                  \begin{axis}[
                  xmin = 0,
                  xmax = 20000,
                  ymin = 0,
                  xtick={0,5000,10000,15000,20000},
                  xticklabels={0,5,10,15,20},
                  xlabel=Time (s),
                  ylabel=\textsc{adc} value,
                  grid=major
                  ]
                  \addplot [red, thick] file [x=num,y=AccTwo]
                  {100mhz_20s_002_1.txt};
                  \addplot [green, thick] file [x=num,y=AccTwo]
                  {100mhz_20s_002_2.txt};
                  \legend{Node 1,Node 2}
                  \end{axis}
                  \end{tikzpicture}
                  \end{document}
                  `

                  è possibile toglierlo?

                  Grazie
                  Marco

                  Si d’accordo ma poi devi fare lo stesso anche con gnuplot!

                  Veramente no, su gnuplot se gli dico di usare solo una colonna per plottare lui costruisce l’asse x da solo con un progressivo da 0 al numero di campioni, infatti scrivendo:
                  `plot '100mhz_20s_002_1.txt' using 1` ottengo il grafico che ti ho postato prima.

                  Marco

                • #93353
                  Up
                  0
                  Down
                  ::


                  Ora riesco a plottare tutti i grafici di cui ho bisogno, solo che quando tento di aprire i pdf, o il pdf dell’articolo dove ho incluso queste immagini tutti i programmi di render di pdf si bloccano… anche se le immagini hanno dimensioni veramente piccolissime! pochi kbyte!

                  Cosa posso fare?

                • #93354
                  Up
                  0
                  Down
                  ::


                  Nessuno ha qualche idea??

                  Please
                  Marco

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

              Go to top