• Apfeltalk ändert einen Teil seiner Allgemeinen Geschäftsbedingungen (AGB), das Löschen von Useraccounts betreffend.
    Näheres könnt Ihr hier nachlesen: AGB-Änderung
  • Was gibt es Schöneres als den Mai draußen in der Natur mit allen Sinnen zu genießen? Lasst uns teilhaben an Euren Erlebnissen und macht mit beim Thema des Monats Da blüht uns was! ---> Klick

Speichererweiterung LaTeX

Macnum

Martini
Registriert
28.07.10
Beiträge
659
Hallo liebe AT'ler,

ich versuche gerade per pgfplots einen Graphen mit recht vielen Punkten zu bestücken.
Allerdings kann pdflatex die vielen Punkte nicht mit dem derzeitigen Memory-Kontingent verarbeiten. Nehme ich einige Werte heraus, funktioniert es, also liegt es nicht an meinem Code. (Bitte auch keine Diskussion, ob das Paket sinnvoll ist...)

Ich möchte lediglich eines wissen: Wie ändere ich den verfügbaren Memory Platz?

Habe einige Anleitungen mit unterschiedlichsten Speicherorten der texmf.cnf Datei gefunden, aber alle diese rte existieren auf meinem System nicht. Irgendwoher muss aber LaTeX ja seine Informationen haben - also: Wo suchen? oder: Was tun?

mgdfs Macnum
 

Macnum

Martini
Registriert
28.07.10
Beiträge
659
Nach langer Suche habe ich zumindest eine brauchbare Lösung gefunden, wenn es rein um die Darstellung der Kurven geht.

Zunächst erweitert man den TeX-Speicher, damit pgfplots mit umfangreichen Datensätzen umgehen kann.
Dazu trägt man in die texmf.cnf-Datei, welche ab TL2011 unter
Code:
/usr/local/texlive/<Jahr>/texmf.cnf
zu finden ist, folgende Parameter mit z.B. n>4000000 nachträglich ein:
Code:
main_memory = n
nextra_mem_top= n
extra_mem_bot= n
font_mem_size= n
pool_size= n
Bei den Meisten ist dieser Ordner schreibgeschützt, daher empfiehlt sich ein Kopieren auf den Desktop, Abspeichern, Umbenennen der alten Datei z.B. zu "texmf_old.cnf" und Einfügen der aktualisierten .cnf Datei.

Abschließend muss in der Konsole
Code:
sudo fmtutil-sys --all
eingetippt werden, um TeX die neuen Werte zu übergeben.

Nun kann es eigentlich losgehen. Problem ist jedoch, dass - sofern man pdflatex zum Kompilieren verwendet - das Plotten einer Tabelle mit mehr als 7000 Wertepaaren immer noch recht zäh vonstattengeht.

Ich habe es so gelöst, dass ich per pgfplots das Konsolenprogramm GNUplot aufrufe (-shell-escape bzw. --enable-write18 und GNUplot-Installation vorausgesetzt) und dieses das Plotten übernimmt.
Einsparung waren bei mir im konkreten Fall ca. 1/3 der Kompilierzeit.
Wem das immer noch nicht reicht, der kann GNUplot dazu veranlassen, nur jeden n-ten Wert einer Tabelle zu plotten.
Ein Minimalbeispiel sieht dann z.B. so aus:
Code:
\documentclass{scrartcl}
 \usepackage[utf8]{inputenc}   %test.txt ist in UTF-8 kodiert
 \usepackage{pgfplots}
 \pgfplotsset{compat=1.7}    %aktuellste Einstellungen verwenden

\begin{document}


%Diagramm mit pgfplots
\begin{figure}[htb]
 \centering
  \begin{tikzpicture}
   \begin{axis}[
       width=1\linewidth,
       height=10cm,
       xlabel={U [V]},
       ylabel={I [mA]}
       ]
\addplot+[only marks, mark options={scale=0.25}] 
   gnuplot [raw gnuplot]{  %Aufruf von  GNUplot
        plot 'test.txt' every 5;            
             };   
\end{axis}
  \end{tikzpicture}
 \caption{caption}
\end{figure}


\end{document}

Die Datei 'test.txt' habe ich einmal HIER hinterlegt

Wenn jemand noch Anregungen oder Fragen hat, kann er sie gern hier posten oder direkt per PN an mich schicken. Ich bin erfreut über sämtliche Hinweise, die das Arbeiten mit LaTeX einfacher machen.
Mgdfs Macnum
 

eject

Pferdeapfel
Registriert
21.02.10
Beiträge
79
Hi,

als Anregung würde ich empfehlen mal gnuplot selber anzuschauen (gnuplot, nix GNU, phonetisch von newplot dessen name aber schon vergeben war, laut statement auf der webseite ist nur am Satzanfang ein Gnuplot anstatt von gnuplot zulässig). Wenn man mit gnuplot als standalone als terminal tikz wählt bekommt man das *.tex file. Dieses kann man dann genauso einbinden, der eigentliche plot vorgang wird dann aber natürlich nicht bei jedem compilieren ausgeführt (spart zeit).
 

Macnum

Martini
Registriert
28.07.10
Beiträge
659
Das ist ein interessanter Ansatz. Leider liegt die Beschränkung der Rechenzeit im Kompilieren jener tikz-Grafik, die gnuplot (danke, wieder etwas gelernt) erzeugt und nicht im eigentlichen Plotvorgang.
D.h., pdflatex hat seine Probleme generell in der Verarbeitung von tikz-Grafiken mit derart riesigen Ansammlungen von Messwerten (z.B. n > 30.000). Ob diese vorverarbeitet sind oder nicht, bringt in Summe kaum eine Verkürzung der Kompilierzeit.
 

eject

Pferdeapfel
Registriert
21.02.10
Beiträge
79
ja, das ist ärgerlich. Zumal das tikz terminal die besten resultate liefert. Da kann man btw richtig geile sachen machen. Ich hab für meine Diss. Zusätzlich zu meinen Messerwerten literatur werte geplotet und die datenpunkte mit \cite{} beschriftet. Natürlich voll flexible je nachdem wo die grafik im test auftaucht und mit pdf link.
Man kann für manche sachen acuh entweder die messwerte reduzieren (also die daten vorher manipulieren und nur jeden 2 oder 3 messwert plotten, macht of keinen unterschied) oder im falle von verläufen von z.B. origin oder matlab einen spline erstellen lassen und dann die funktion plotten, das spart natürlich massiv.
Ich habe ähnliche probleme gehabt beim darstellen von röntgen diffraktogrammen mit sehr langen messzeiten. da ist die Anzahl der datenpunkte zwar genauso hoch wie bei kürzeren messzeiten aber der messwert für jeden messpunkt viel höher (proportional zur messzeit eben). Die tikz datei konnte extrem verkleinert werden in dem ich die y-werte durch 100 geteilt habe. dabei geht keine information verloren da die statistische verteilung gleich bleibt.
 
Zuletzt bearbeitet:
  • Like
Reaktionen: Macnum

eject

Pferdeapfel
Registriert
21.02.10
Beiträge
79
ich weiß nicht ob ich deine frage richtig verstanden habe aber latex braucht die gnuplot-lua-tikz.sty

die muss entweder im user verzeichnis eingepflegt werden oder in der dokument root liegen und dann mit

\usepackage{gnuplot-lua-tikz}

eingebunden werden.
Falls die tikz unterstützung in gnuplot fehlt kann ich dir leider nicht wirklich helfen einfach weil ich vergessen habe wie ich das damals installiert habe (ich verwende eine version die jetzt mindestens schon 2 jahre alt ist da ich keinen bedarf zum updaten sehe). kompliziert war das nicht, ich habe es aufjedenfall ohne paketmanager wie fink oder ähnliches installiert.
 

Anhänge

  • gnuplot-lua-tikz.sty.zip
    3,6 KB · Aufrufe: 84

Macnum

Martini
Registriert
28.07.10
Beiträge
659
Danke,

Ich bin nun wie folgt vorgegangen:

1. lua von www.lua.org heruntergeladen

2. lua installiert (Anleitung)

3. Die lua-Pakete unter <>/gnuplot.x.x.x/term/lua/ erstellt, mit
Code:
lua gnuplot-tikz.lua style
und in das lokale PaketVZ verschoben.

4. Gnuplot mit folgenden Einstellungen installiert:
Code:
$ ./configure --with-lua=yes
$ make
$ sudo make install

Ich glaube das Hauptproblem war, dass ich von vorn herein kein lau installiert hatte, dadurch waren die restlichen Schritte nicht möglich. Jetzt funktioniert es und ich werde demnächst einmal berichten, ob das tikz-Terminal zum Einsatz kommt oder nicht.
Vielen Dank für deine Hilfe!

Mgdfs Macnum