
Kennt jemand von euch die Standardformatierung für pgfplots
Diagramme, die aus externen Dateien stammen (und auch den akzeptierten Dateityp, z. B. txt
, dat
) und was in die eingegeben werden muss, \addplot
damit die Daten aus genau dieser Datei stammen?
Vielen Dank für jede Hilfe.
Antwort1
Ich glaube, es werden nur reine Textdateien unterstützt, aber die Dateierweiterung kann beliebig sein,
.txt
,.dat
,.csv
,.montypython
, was auch immer.Das Standardformat sind durch Leerzeichen getrennte Spalten, in dem Sinne, dass das standardmäßig erwartete Spaltentrennzeichen Leerzeichen sind („mindestens ein Tabulator oder Leerzeichen“, um das Handbuch zu zitieren). Sie können jedoch mit dem
col sep
Schlüssel ein anderes Trennzeichen angeben, das diese verschiedenen Optionen haben kann:col sep=space|tab|comma|colon|semicolon|braces|&|ampersand
Wenn Sie also eine Textdatei haben, die wie folgt aussieht:
x y 1 1 2 3
dann kannst du tun
\addplot table {<filename including extension>};
und Sie erhalten ein Diagramm von y vs. x.
pgfplots
Sofern nicht anders angegeben, wird die erste Spalte für die x-Werte und die zweite für die y-Werte verwendet.Wenn Sie eine durch Kommas getrennte Datei haben, d.h.
x,y 1,1 2,3
dann musst du sagen
\addplot table[col sep=comma] {<filename including extension>};
Wenn Sie mehr als zwei Spalten haben, wählen Sie die gewünschten Spalten für x und y entweder mit
x=<column name>, y=<column name>
oder ausx index=<number>, y index=<number>
. (Sie können natürlich auch den Namen fürx
oderindex
für verwendeny
, wenn Sie möchten.) Also zum Beispiel:\addplot table[x=x, y=y] {<filename including extension>};
für die erste oben gezeigte Beispieldatei, wo die Spaltenüberschriften tatsächlich
x
und sindy
.Wenn die erste Zeile nur Zahlen enthält,
pgfplots
wird sie nicht als Spaltennamen gelesen, sondern es wird stattdessen davon ausgegangen, dass die Datei keine Kopfzeile hat.- Dies
<column name>
ist der in der ersten Zeile geschriebene Text, alsox
und y` für die obigen Beispiele. - Dies
<number>
ist die Spaltennummer. Beachten Sie jedoch, dass die Zählung bei Null beginnt. Um die erste Spalte zu erhalten, müssenx
Sie also Folgendes tunx index=0
.
- Dies
Beispielcode, falls das von Interesse ist:
\documentclass[border=5mm]{standalone}
\usepackage{pgfplots}
\pgfplotsset{compat=1.15}
\usepackage{filecontents}
\begin{filecontents}{A.dat}
0 0
1 1
2 2
\end{filecontents}
\begin{filecontents}{B.csv}
0,1
1,2
2,3
\end{filecontents}
\begin{filecontents}{C.montypython}
foo bar baz
0 2 3
1 3 4
2 4 5
\end{filecontents}
\begin{document}
\begin{tikzpicture}
\begin{axis}
\addplot table {A.dat};
\addplot table[col sep=comma] {B.csv};
\addplot table[x=foo, y=bar] {C.montypython};
\addplot table[x index=0, y index=2] {C.montypython};
\legend{A,B,C1,C2}
\end{axis}
\end{tikzpicture}
\end{document}