PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Wer von euch nutzt pgfplotstable? Fragen hierzu



bene
11-05-2011, 00:59
Hallo zusammen,

ich muss in meiner Arbeit viel mit Tabellen aus Matlab hantieren und da dachte ich, das versuch ich jetzt mal mit pgfplotstable. Die Funktionalität sieht auf den ersten Augenblick für mich eigentlich echt gut aus. Ich hab jetzt auch die entsprechende Anleitung tatsächlich schon durchgelesen, aber ich hab immer noch einige Probleme mit dem package.

Kennt jemand von euch zufällig noch eine weiterführende, gute Beschreibung dazu?

Ich versuch mal einige Probleme von mir aufzuzählen:

Wenn ich ein Zahlenformat für eine Spalte angeben möchte mit, warum gibt muss man dann "sci, sci zerofill" oder "fixed, fixed zerofill" angeben, wenn ich mit Nullen auffüllen möchte? ich versteh die Syntax nicht ganz, was die beiden Argumente genau tun.

Ich möchte global bspw. fünf Nachkommastellen und sci-Format einstellen. Dazu dachte ich, mache ich in der Preample ein "\pgfplotstableset{sci, sci zerofill, precision=5}". Funktioniert für Tabellen sogar. Nachteil dabei ist, dass auch jegliche Zahlen, die ich in pgfplots-Diagrammen benutz, das selbe Format haben. Diese möchte ich aber unangetastet lassen.

Ich möchte ein globales "sci sep align". Wenn ich das einfach in pgfplotstableset reinschreib, wird das aber nicht akzeptiert.

Lässt sich das sci-Format anpassen? Ich meine jetzt ob bspw auch 0.123 angezeigt werden kann und nicht direkt 1.23e-1 geschrieben wird.

Lässt sich der Mal-Punkt vor dem 10^ anpassen? Ich benutz im Dokument auch den \num-Befehl aus siunitx und der erzeugt mir statt eines Punktes ein x.

Momentan schreibe ich auf Englisch und es wird als Dezimaltrennzeichen ein Punkt verwendet, was ich auch so haben möchte. Wenn ich allerdings auf Deutsch umschalte bleibt es bei diesem Punkt. Kann man das manuell anpassen und auch so, dass es sich der Sprache anpasst?

Ich möchte als 1000-Trennzeichen im nicht das Komma. Mir wäre ein halbes Leerzeichen recht. Geht das auch? Lässt es sich auch so einstellen, dass es erst bei 10000 und noch nicht bei 1000 auftritt?

Das sind mal so einige Fragen, dich ich bisher habe. Ich werd dabei aus der Anleitung leider nicht ganz so schlau, vielleicht könnt ihr mir da ja weiterhelfen.

bene
13-05-2011, 01:00
keiner der sich ein bisschen damit auskennt? würd mir schon helfen. Weil ich find das package prinzipiell schon ziemlich gut

Feuersaenger
14-05-2011, 21:06
Hallo bene,

es freut mich, dass Dir das Paket nuetzlich erscheint.

Ich hoffe, ich kann einige Deiner Fragen klaeren:

a) ich habe es intensiv fuer meine alltaeglich Arbeit am Lehrstuhl genutzt, ausserdem fuer meine Dissertation.

b) ich kenne keine weiterfuehrende Beschreibung zu dem Paket ausser dem mitgelieferten Manual.

c) Zu der Frage "sci,sci zerofill" versus "sci": Das "sci zerofill" ist ein boolean. Es ist defaktor dasselbe, ob Du "sci zerofill" oder "sci zerofill=true" schreibst. Der Switch kontrolliert, wie den der "sci" modus tatsaechlich angewandt wird; konkret: ob im sci modus mit nullen aufgefuellt wird. Aber "sci zerofill" selber aktiviert *nicht* den sci modus, dafuer muss man noch "sci" schreiben. Beachte, dass "sci zerofill" auch dann greift, wenn der sci modus irgendwie anders aktiviert wird (z.B. im "std" modus, wenn Du sehr grosse oder absolut sehr kleiner Zahlen hast).

d) Zu der Frage einer globalen Voreinstellung, die nur fuer Tabellen gilt: das kannst Du machen, indem Du
\pgfplotstableset{every table/.style={precision=5,sci,....}}
setzt. Das "/.style" definiert oder redefiniert einen style mit Namen "every table". Der "every table" style wird von dem Paket am Anfang jeder Tabelle ausgewertet (und nur dort). Wenn Du da irgendwas reinschreibst, gilt es nur fuer Tabellen.

e) Warum "sci sep align" nicht global voreinstellbar ist, weiss ich gerade nicht. Was passiert denn dann?

f) Zur Frage, ob sich das "sci" format anpassen laesst: ja, es gibt "sci generic". Das kann man so verwenden:
<code>
\pgfkeys{
/pgf/number format/.cd,
sci,
sci generic={mantisse sep=\times,exponent={10^{#1}}}}
\pgfmathprintnumber{12.345};
\pgfmathprintnumber{0.00012345}
</code>

Allerdings kannst Du damit "nur" das wissenschaftliche Format wiedergeben; es ist bspw. nicht moeglich, damit "0.123" auszugeben. Wenn Du dynamisch entscheiden willst, ob und wann fixed point und wann sci genommen werden soll, musst Du stattdessen das "std" format nehmen. Dem kann man Exponentenranges uebergeben, fuer die sci verwendet wird (fuer alle anderen ist es dann fixed).

g) zum mal-punkt vor dem Exponenten: ja, siehe Antwort zu (f)

h) zu Deutschsprachigen Dokumenten und entsprechenden Dezimalseparatoren: ja, das geht. Im prinzip kannst Du jeden beliebigen Dezimal/Tausenderseparator einstellen. Ganz konkret fuer das Paar "komma/punkt" kann man auch einfach
"use comma" bzw. "use period" eingeben. Diese Einstellungen musst Du manuell vornehmen; Du kannst es aber gerne mittels
\pgfplotstableset{use comma} machen. Dieses Kommando ist gueltig, bis zur naechsten (passenden) Ende-klammer '}' . Beispiel:
<code>
{% start von Deutsch
\pgfplotstableset{use comma}
......
}% ende von Deutsch
</code>

i) Anpassung des 1000 separators: nutze "1000 sep=\," fuer ein halbes Leerzeichen. Beachte, dass "use comma" automatisch "1000 sep=." oder so setzt.

j) 1000 separatoren erst ab einer gewissen Zahlgroesse: ja, das geht auch. Nutze
"min exponent for 1000 sep=4". Das Argument ist der Exponent, d.h. so wird ab 10^4 ein 1000er separator verwendet.

Fuer all diese Zahlformat-spezifischen Sachen sollte das Kapitel "Number Formatting Options" weiterhelfen; es enthaelt zu allen verfuegbaren keys detaillierte Dokumentation und Beispiele.

Ich hoffe, ich konnte Dir damit etwas weiterhelfen...

Mit liebem Gruss

Christian

bene
15-05-2011, 18:42
Hi,

vielen Dank mal für die ausführliche Erklärungen. Ich bin momentan gerade ziemlich beschäftigt, aber ich werd es mir im Laufe der Woche genauer durchschauen und ausprobieren.

Viele Grüße,
bene

bene
15-05-2011, 23:07
jetzt hab ich doch zumindest eines gleich ausprobiert:


e) Warum "sci sep align" nicht global voreinstellbar ist, weiss ich gerade nicht. Was passiert denn dann?
er bricht mit zig Fehlern ab. Die sind alle die folgenden:

! Extra alignment tab has been changed to \cr.
<template> \endtemplate
l.182 }
You have given more \span or & marks than there were
in the preamble to the \halign or \valign now in progress.
So I'll assume that you meant to type \cr instead.

das sci sep align wird bei mir immer nur im .style einer column akzeptiert, nicht global über every table.

Feuersaenger
16-05-2011, 21:22
Hallo bene,

das hoert sich tatsaechlich komisch an. Vermutlich ist die Antwort da: bei column styles bleiben...

Mit liebem Gruss

Christian