Anzeige:
Ergebnis 1 bis 6 von 6

Thema: pgfplotstable - extra Zeile für Einheiten

  1. #1
    Registrierter Benutzer Avatar von FloSch369
    Registriert seit
    07.03.2008
    Beiträge
    47

    pgfplotstable - extra Zeile für Einheiten

    Hallo,

    habe Zahlenwerte in einer Datei und erstelle daraus mittels pgfplotstable eine Tabelle. Ist es möglich, entweder an diese Tabelle eine zusätzliche Zeile mit den Einheiten der jeweiligen Spalte anzufügen oder für Zeilen unterschiedliche Formatierung vorzugeben (sprich: die letzte Zeile als string type)? Beiße mir da gerade die Zähne dran aus.

    So sollte das dann in etwa aussehen
    Code:
    ==================
    Col1 Col2 Col3 ...   <- Spaltenüberschriften
    ------------------
       0    5    1 ...   <- Zahlenwerte (Daten der Tabelle)
       2    6    0 ...
       1    5    7 ...
     ...  ...  ... ...
    ------------------
       m    J    W ...   <- Zeile mit den Einheiten
    ==================
    Natürlich wäre es super einfach, die Einheiten in einer zusätzlichen Spalte (dann als string type) zu definieren und den Inhalt der Tabelle zu transformieren. Aber a) möchte ich das nicht und b) würden meine Tabellen dann nicht mehr auf die Seiten passen, da die Tabellen wesentlich höher als breiter sind.

    Die einfachste Lösung schien mir, die Einheiten direkt in die letzte Zeile in der Datei zu schreiben. Aber dann kommt natürlich eine Fehlermeldung, weil der Inhalt nicht als Zahl erkannt werden kann. Wollte mir dann mit einem Trick behelfen: für jede verwendete Einheit eine Nummer, die sonst nicht in den Daten vorkommt (z.B. 999999999 für N und 999999998 für m, ...) und mittels string replace dann ersetzen. Funzt natürlich auch net, weil string replace nur im pre processing geht und dann wiederum der neue Inhalt auch nicht als Zahl erkannt wird.

    Kann mir hier bitte jemand helfen?
    Vielen Dank
    Geändert von FloSch369 (23-09-2009 um 12:54 Uhr) Grund: falscher Titel

  2. #2
    Registrierter Benutzer Avatar von FloSch369
    Registriert seit
    07.03.2008
    Beiträge
    47
    Update:
    es funktioniert mit empty cells with. Am Ende in der Datei einfach eine Zeile mit leere Werte eingeben, also z.B.
    Code:
    ...
    1234; 223; 243.111; 3413244; ...
    ;;;; ...
    wenn der Trenner semicolon ist, und dann mittels empty cells with={[einheit]} für die jeweilige column die Einheit hinzufügen. Allerdings funktioniert das nur, wenn tatsächlich nirgendwo sonst leere Zellen sind. Da das bei mir der Fall ist, kann ich mit dieser Lösung gut leben. Allerdings würde mich eine generelle Lösung trotzdem interessieren.

  3. #3
    Registrierter Benutzer
    Registriert seit
    07.04.2005
    Beiträge
    112
    Geht aber nur, wenn man sonst keine leeren Werte hat.

  4. #4
    Registrierter Benutzer Avatar von FloSch369
    Registriert seit
    07.03.2008
    Beiträge
    47
    Ja klar, wie oben bemerkt:
    Zitat Zitat von FloSch369 Beitrag anzeigen
    Allerdings funktioniert das nur, wenn tatsächlich nirgendwo sonst leere Zellen sind...
    Und aus ebendiesem Grund:
    Zitat Zitat von FloSch369 Beitrag anzeigen
    Allerdings würde mich eine generelle Lösung trotzdem interessieren.

  5. #5
    Registrierter Benutzer
    Registriert seit
    07.04.2005
    Beiträge
    112
    Wie wär's hiermit:

    Code:
    \documentclass{scrartcl}
    
    
    \usepackage{tikz, pgfplots, booktabs, colortbl}
    
    \begin{filecontents}{test.dat}
    level dof error1 error2 info {grad(log(dof) log(error2))} quot(error1)
    1 4 2.50000000e-01 7.57858283e-01 48 0 0
    2 16 6.25000000e-02 5.00000000e-01 25 -3.00000000e-01 4
    3 64 1.56250000e-02 2.87174589e-01 41 -3.99999999e-01 4
    4 256 3.90625000e-03 1.43587294e-01 8 -5.00000003e-01 4
    5 1024 9.76562500e-04 4.41941738e-02 22 -8.49999999e-01 4
    6 4096 2.44140625e-04 1.69802322e-02 46 -6.90000001e-01 4
    7 16384 6.10351562e-05 8.20091159e-03 40 -5.24999999e-01 4
    8 65536 1.52587891e-05 3.90625000e-03 48 -5.35000000e-01 3.99999999e+00
    9 262144 3.81469727e-06 1.95312500e-03 33 -5.00000000e-01 4.00000001e+00
    10 1048576 9.53674316e-07 9.76562500e-04 2 -5.00000000e-01 4.00000001e+00
    \end{filecontents}
    
    \begin{document}
    \newcommand{\Einheiten}{DOF & $L_2$ & Err & F & N & F & D}
    \pgfplotstabletypeset[
    	every even row/.style={before row=\rowcolor[gray]{0.9}},
    	every head row/.style={before row=\toprule,after row=\midrule},
    	every last row/.style={after row=\Einheiten\\\bottomrule}
    ]{test.dat}
    \end{document}
    Dann vor jeder Tabelle \renewcommand{\Einheiten}{...} ausführen.

  6. #6
    Registrierter Benutzer Avatar von FloSch369
    Registriert seit
    07.03.2008
    Beiträge
    47

    Thumbs up

    Super, läuft.
    Vielen Dank!

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •