Hallo Dirk,
vorschlag: ich gebe Dir anhand von dummy-daten eine Erlaeuterung der Befehle - Du muesstest dann pruefen, ob Deine Daten entsprechend aussehen (denn leider ist mir die Pruefung nicht gelungen).
Also: surface plots erwarten eine daten *matrix*.
Da Tabellen aber nunmal typischerweise eindimensional angelegt werden (d.h. wie bei Dir: eine spalte fuer X, eine fuer Y und eine fuer Z) muss man die matrix serialisieren. Soweit, so einfach. Der Punkt ist nur: wie deserialisiert man sie wieder? Hier kommen die genannten optionen zum tragen.
Beispiel:
nehmen wir an, Du hast folgende Matrix von funktionswerten:
1 2 3
4 5 6
und wir gehen mal davon aus, dass x=1,2,3 und y=4,5 ist (d.h. f(x=2,y=4) = 2). Hier habe ich die x an die spaltenindizes geklebt und y an die zeilenindizes.
eine serialisierungsmethode ist *x varies*. Sieht dann so aus:
X Y Z
1 4 1
2 4 2
3 4 3
1 5 4
2 5 5
3 5 6
In Bezug auf die Matrix ist das *zeilenweise* kodierung.
Fuer diese Matrix muesste man
\addplot[surf,mesh/ordering=x varies,mesh/rows=2] table {
X Y Z
1 4 1
2 4 2
3 4 3
1 5 4
2 5 5
3 5 6
};
schreiben (oder aus nem datenfile; das ist egal).
Man kann auch *y varies* nehmen; das entspricht dann *spaltenweiser* kodierung:
X Y Z
1 4 1
1 5 4
2 4 2
2 5 5
3 4 3
3 5 6
Dafuer muesste man entsprechend
\addplot[surf,mesh/ordering=y varies,mesh/rows=2] table {
X Y Z
1 4 1
2 4 2
3 4 3
1 5 4
2 5 5
3 5 6
};
schreiben.
In Bezug auf mesh/rows gilt: man muss entweder mesh/rows oder mesh/cols oder beide angeben.
Es sei denn.... man nutzt folgende alternative, dann braucht man beides nicht:
Zusaetzlich hat pgfplots die moeglichkeit, "scanline marker" zu lesen. Sprich: immer dann, wenn eine zeile bzw. spalte zu ende ist, kann man einfach eine leere zeile in die eingabetabelle schreiben. Dann kann man sich die explizite angabe von mesh/rows sparen.
Sprich: obige Daten koennte man aequivalent durch
\addplot[surf,mesh/ordering=x varies] table {
X Y Z
1 4 1
2 4 2
3 4 3
1 5 4
2 5 5
3 5 6
};
bzw.
\addplot[surf,mesh/ordering=y varies] table {
X Y Z
1 4 1
2 4 2
3 4 3
1 5 4
2 5 5
3 5 6
};
ausdruecken.
Das ist so ziemlich das, was pgfplots an datenfiles unterstuetzt.
Details + mehr doku + beispiele gibt es im pgfplots manual.